Заменить любую строку из более чем 8 символов, начинающуюся с /, ссылкой?

#jquery #regex

#jquery #регулярное выражение

Вопрос:

Как мне использовать jQuery для замены любых строк текста, начинающихся с / и более 8 символов (строка текста заканчивается на первом пустом месте), ссылкой, ведущей на imugr.com/the строка текста здесь?

Например:

/sA9xK4D будет преобразовано в <a href="imugr.com/sA9xK4D">/sA9xK4D</a>

/Pq9xV39x a,#xK2F будет преобразовано в <a href="imgur.com/Pq9xV39x">/Pq9xV39x</a> a,#xK2F

Этот код не работает; он говорит, что undefined не является функцией.

 content = $("body").replace(/(/[a-zA-Z0-9]{1,8})(?=s)/g, '<a href="http://www.imgur.com$1" target="_blank">$1</a>');
$("body").html(content) 
  

Комментарии:

1. Я думаю, вам нужно регулярное выражение.

2. Для этого вам не нужен jQuery. В JavaScript есть собственные регулярные выражения.

3. Извините, я с этим не знаком.

4. более 8 символов (8 или более). также я добавил код к вопросу

Ответ №1:

Следующий должен соответствовать вашим потребностям:

 (/[a-zA-Z0-9]{8,})(?=s)
  

Визуализация регулярных выражений

Заменить на <a href="industus.com$1">$1</a>

Визуализация с помощью Debuggex

Демонстрация на RegExr


Как использовать это в JavaScript (пример):

 // initial content
var content = document.getElementById("init").innerHTML;

// replace using the "global" flag
// see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp
content = content.replace(/(/[a-zA-Z0-9]{8,})(?=s)/g, '<a href="industus.com$1">$1</a>');

// set replaced content in other div
document.getElementById("replaced").innerHTML = content;
  

Демонстрация на JSFiddle

Ответ №2:

Попробуйте записать первую часть в group1, а следующую часть в group2,

 ^(/[^s]*)(.*)
  

ДЕМОНСТРАЦИЯ

Комментарии:

1. Как мне использовать это в jQuery?

Ответ №3:

попробуйте этот пример:

 var re = //[wd]{8,}/;
var string = "this is my string /aZ2scXo35676";

var link = string.match(re)[0]; // will match "/aZ2scXo35676"

var result = string.replace(re, TEMP.replace(/[AAA]/g, link[0]))

// result will equal 'this is my string <a href="industus.com/aZ2scXo35676">/aZ2scXo35676</a>'
  

Комментарии:

1. Вопрос в том, чего вы пытаетесь достичь с помощью окончательного тега? для чего именно вы пытаетесь использовать jquery?

2. Боковое примечание: w уже содержится d в нем ( w is [0-9A-Za-z_] , d is [0-9] ), поэтому [wd] является немного избыточным и может быть просто заменено на w .