Регулярное выражение не содержит несколько слов - PullRequest
2 голосов
/ 30 апреля 2019

Как избежать определенных слов из строки с помощью регулярного выражения

Строка не должна содержать тест, пример слов используя выражение ниже

^((?!(sample|test)).)*$

Я могу сделать, но в некоторых ситуациях это не удается

 example: 
    1) this is a test case 
    2) this is a testing area 

в двух приведенных выше примерах

1. у него есть слово test, поэтому он работал нормально, но в примере
2) У него нет теста на слово, оно должно быть ниже

Есть ли способ достичь этого? спасибо за ваше драгоценное время и ответ

Ответы [ 2 ]

4 голосов
/ 30 апреля 2019

Вам необходимо использовать \b вокруг слов, чтобы они могли соответствовать, ТОЛЬКО если они отсутствуют как целые слова.Попробуйте использовать это,

^(?:(?!\b(sample|test)\b).)*$

Кроме того, это хорошая идея сделать группу без захвата, если только вы не собираетесь использовать ее значение.

RegexДемо

Редактировать:

Чтобы сделать его чувствительным к регистру, включите флаг i, поместив i сразу после / врегулярное выражение.JS демо,

var arr = ['this is a test case','this is a testing area','this is a Test area']

arr.forEach(s => console.log(s + " --> " + /^(?:(?!\b(sample|test)\b).)*$/i.test(s)))
1 голос
/ 30 апреля 2019

Попробуйте это регулярное выражение (граница слова '\ b' необходима, и перед этими образцами может быть произвольное количество символов):

/^(?!.*?\b(sample|test)\b)/

тоже будет соответствовать пустой строке, потому что это не 'не содержит образец или тестовое слово.Чтобы проверить, не должна ли строка быть пустой и не содержать образец и тестовое слово, используйте:

/^(?!.*?\b(sample|test)\b).+?/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...