Member 11736781 Ответов: 2

Javascript-regexp-поиск слов из массива в строке, только целых слов.


Привет,
Я должен построить регулярное выражение obejct, которое будет искать слова из массива,
и найдет только совпадение целых слов.

напр.
У меня есть массив слов ('a', 'b', 'c'),
и я хочу, чтобы регулярное выражение находило "a", " b " или "c", но не "aaa".

Как я должен построить свое регулярное выражение?
Заранее спасибо!

Что я уже пробовал:

Я попробовал этот код:
new RegExp('(word1|word2|word3)','g');


Он работает хорошо, но он находит также такие слова, как "word11111", я должен сопоставлять только целые слова.

2 Ответов

Рейтинг:
5

Member 11736781

Решение состояло в том, чтобы использовать XRegExp:

var re = XRegExp('(^|[^_0-9\\pL])(' + matchWords.join('|') + ')(?![_0-9\\pL])','ig');
text = XRegExp.replace(text.replace(/\n$/g, '\n\n'), re, '$1<mark>$2</mark>');


Рейтинг:
0

Thomas Daniels

Попробуй:

new RegExp('\\b(word1|word2|word3)\\b','g');
\b это граница слова[^] так что теперь ваше регулярное выражение будет соответствовать только полным словам.

Чтобы создать это из массива со словами:
var words = [ "word1", "word2", "word3" ];
var regex = new RegExp('\\b(' + words.join('|') + ')\\b', 'g');


Member 11736781

Большое вам спасибо за ваш ответ!
Когда я использую:
ВАР регулярное выражение = новое регулярное выражение('(' + слова.присоединяйтесь('|') + ')', 'г');
Регулярное выражение находит также частичные слова,
но когда я использую:
ВАР регулярное выражение = новое регулярное выражение('\\б(' + слова.присоединяйтесь('|') + ')\\Б', 'г');
Регулярное выражение не находит никакого слова :-(

Member 11736781

Теперь я вижу, что с английскими символами код работает хорошо, но не с еврейскими символами.

Thomas Daniels

Я вижу. Ничего не могу с этим поделать, извините! Но я рад слышать, что вы сами нашли решение.