Javascript Regex - вставить слово (хит) - PullRequest
2 голосов
/ 26 августа 2010

можно ли вставить слово, найденное в замену?

$(function() {

    content = 'hallo mein name ist peter und ich komme aus berlin. Und du?';

    words = 'mein na,berlin'

    words = words.replace(/,/,'\|');
    words = words.replace(/\s/,'\\s');

    regex = new RegExp(words,'gi');

    content = content.replace(regex,'<strong>*insert here the word that was found*</strong>');

    alert(''+content+'');

});

рабочий пример http://www.jsfiddle.net/V9Euk/227/

Заранее спасибо! Питер

1 Ответ

4 голосов
/ 26 августа 2010

Попробуйте это:

content.replace(regex,'<strong>$&</strong>');

$& заменяется полным соответствием.
Рабочий пример: http://www.jsfiddle.net/V9Euk/228/

Если вам удобнее, вы можете добавить группу и заменить ее на $1 (этот вызов вызовет меньше вопросов):

words = words.replace(/,/g,'\|');
words = words.replace(/\s/g,'\\s');
words = '(' + words + ')';

regex = new RegExp(words, 'gi');

content = content.replace(regex,'<strong>$1</strong>');

Обратите внимание, что вы, вероятно, хотите, чтобы флаг g заменял эти символы, или измените только первый пробел и запятую.
Если вы также хотите избежать частичного соответствия (чтобы «mein na» не захватывало), добавьте \b:

words = '\\b(' + words + ')\\b';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...