Регулярное выражение для проверки, если строка не должна содержать определенные слова, но эти слова в порядке, если перед словами стоит 'to' или 'for' - PullRequest
2 голосов
/ 13 февраля 2020

У меня есть случай, когда для данной строки мне нужно проверить, что строка не содержит слов типа ' com ', ' dot ' et c, но это нормально, чтобы эти слова были такими: ' для ком ' ' до ком ' ' до точки '. Изо всех сил пытается написать для этого функцию регулярного выражения / javascript.

Например:

'maincom', 'maindot'

не должно быть приемлемым согласно шаблону регулярного выражения

'main for com', 'main for dot', 'main to dot', 'main to com'

должно быть приемлемым согласно шаблону регулярных выражений

Ответ основан на комментариях Яна ниже-

^(?!.*\b(?:for com|to com|for dot|to dot)\b).+

Ответы [ 2 ]

2 голосов
/ 13 февраля 2020

Вы можете использовать

^(?!.*\b(?:com|dot)\b).+

См. демо на regex101.com .

1 голос
/ 13 февраля 2020

Мне в голову приходит не одно регулярное выражение, а короткий алгоритм: разбить строку на «слова» (разделенные одним или несколькими не алфавитными символами), создав массив значений. Посмотрите, встречаются ли оскорбительные слова в массиве, и если да, то посмотрите на предыдущее слово в каждом случае, чтобы увидеть, является ли оно «к».

Хотя это вполне может быть возможно для Придумайте регулярное выражение, я думаю, что было бы трудно его отладить и, следовательно, сохранить. (И давайте посмотрим правде в глаза ... «они изменят свое мнение и захотят что-то немного другое».) Я полагаю, что мой предложенный подход будет «достаточно быстрым» и более приемлемым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...