Javascript Regex: смелые иголки в стоге сена - PullRequest
0 голосов
/ 08 августа 2009

Связано (но не то же самое):

Javascript Regex: Как выделить определенные слова с помощью регулярного выражения?

Учитывая иголку и стог сена ... Я хочу поставить жирные метки вокруг иглы. Так какое выражение регулярного выражения я бы использовал с replace ()? Я хочу, чтобы ПРОБЕЛ был разделителем, а поиск не чувствителен к регистру, и я хочу, чтобы при поиске игнорировались специальные символы (например, @! #. ())

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

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?

Я получил это в настоящее время:

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

к сожалению, он не выделяет слова, объединенные специальным символом ... например. ! корова не превращается в !<b>cow</b>

Спасибо

Ответы [ 4 ]

1 голос
/ 07 августа 2009

Разрешить любому непробельному символу быть частью стрелки:

"cows, at www.cows.com, milk COWS!".replace(/(\s|^)(cow\S*)(\s|$)/ig, '$1<b>$2</b>$3');
// Will return: "<b>cows,</b> at www.cows.com, milk <b>COWS!</b>"
1 голос
/ 07 августа 2009

Если вы хотите, чтобы пунктуация была частью стрелки, просто добавьте ее:

function updateHaystack(input, needle) {
    return input.replace(new RegExp('(^|\\s)(' + needle + '[!.,?]?)(\\s|$)','ig'), '$1<b>$2</b>$3');
}
1 голос
/ 07 августа 2009

Похоже, \b должен делать то, что вы хотите. Это совпадение «границ слов» с нулевой шириной.

function updateHaystack(input, needle) {
    return input.replace(new RegExp('\\b(' + needle + ')\\b','ig'), '<b>$1</b>');
}
0 голосов
/ 07 августа 2009

Так что вам нужно поместить в регулярное выражение необязательный раздел для специального символа:

'(^|\\s)(' + needle + '[@!#.(),?]*)(\\s|$)'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...