Javascript Regex: Как выделить определенные слова с помощью регулярных выражений? - PullRequest
8 голосов
/ 05 августа 2009

Учитывая иголку и стог сена ... Я хочу поставить жирные метки вокруг иглы. Так какое выражение регулярного выражения я бы использовал с replace ()? Я хочу, чтобы SPACE был разделителем, и чтобы поиск не зависел от регистра

так сказать, игла "корова" и стог сена

cows at www.cows.com, milk some COWS

превратится в

<b>cows</b> at www.cows.com, milk some <b>COWS</b>

также ключевые слова должны иметь пробелы, поэтому, если ключевое слово "who is mgmt" ...

great band. who is mgmt btw? 

превратится в

great band. <b>who is mgmt</b> btw? 

Спасибо

Ответы [ 4 ]

12 голосов
/ 05 августа 2009

Вот регулярное выражение, чтобы сделать то, что вы ищете:

(^|\s)(cows)(\s|$)

В JS замена выглядит так:

myString.replace(/(^|\s)(cows)(\s|$)/ig, '$1<b>$2</b>$3');

Аккуратно завернут в многократно используемую функцию:

function updateHaystack(input, needle) {
    return input.replace(new RegExp('(^|\\s)(' + needle + ')(\\s|$)','ig'), '$1<b>$2</b>$3');
}

var markup = document.getElementById('somediv').innerHTML;
var output = updateHaystack(markup, 'cows');
document.getElementById('somediv').innerHTML = output;
9 голосов
/ 20 октября 2011

Для тех, кто не хочет использовать пробел в качестве разделителя, просто не используйте \s.

function updateHaystack(input, needle) 
{
 return input.replace(new RegExp('(^|)(' + needle + ')(|$)','ig'), '$1<b>$2</b>$3');
}

работал для меня.

1 голос
/ 05 августа 2009
findstring: /(^|\s)(cows)(\s|$)/ig
newstring: '$1<b>$2</b>$3'

Маркеры \ b предназначены для "границ слов"; флаги / ig предназначены для игнорирования регистра и глобального сопоставления соответственно.

Использование захвата (), а затем $ 1 / $ 2 / $ 3 в новом тексте строки позволяет сохранить заглавные буквы и интервалы для всего сопоставленного.

0 голосов
/ 05 августа 2009
var needle = 'cows';

var regexp = new RegExp('(^|\s)('+needle+')(\s|$)', 'ig');

var old_string = 'cows at www.cows.com, milk some COWs';

var new_string = old_string.replace(regexp, '<b>$1$2$3</b>');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...