Страницы

Поиск по вопросам

суббота, 6 июля 2019 г.

Есть регулярное выражение, поиск русских слов

Полная запись такая:
/\b(admin|bot)\b/gmi.test(elems.name.value)
Как модифицировать чтобы находила [а-яА-ЯёЁ] в совпадениях?
Задача: искать совпадения русских слов в строке, с использованием:
/\b(Админ|Бот)\b/gmi


Ответ

Можно использовать выражение типа
/(?:^|[^a-zA-Zа-яА-ЯёЁ])(?:слово1|слово2|словоN)(?![a-zA-Zа-яА-ЯёЁ])/
См. демо регулярного выражения
Подробности
(?:^|[^a-zA-Zа-яА-ЯёЁ]) - незахватывающая подмаска, либо начало строки, либо любой символ, отличный от русской и английской буквы (?:слово1|слово2|словоN) - одно из перечисленных слов... (?![a-zA-Zа-яА-ЯёЁ]) - сразу после которого не должно быть русской или английской буквы.
var keywords = ['admin', 'bot', 'админ', 'бот']; var reg = new RegExp("(?:^|[^a-zA-Zа-яА-ЯёЁ])(?:" + keywords.join("|") + ")(?![a-zA-Zа-яА-ЯёЁ])"); var tests = ["admin,here", "administrator", "A bot!!!", "no bottle", "админ", "администратор", "работяга"]; for (var i=0; i", reg.test(tests[i])); }

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

Отправить комментарий