Регулярное выражение JavaScript для занесения слов в черный список

Я пытаюсь написать регулярное выражение для внесения в черный список определенных слов. Я могу создать белый список, например /^(carrots|onions|corn)$/, но как мне преобразовать его в черный список?

Редактировать: Чтобы уточнить, я сопоставляю этот черный список со всей строкой. Например, "corndog" должно быть разрешено. Мне нужен эквивалент регулярного выражения blacklistArray.indexOf(word) === -1


person ryanve    schedule 26.04.2017    source источник
comment
проверьте этот stackoverflow .com/questions/7801581/   -  person Mils    schedule 26.04.2017
comment
Спасибо — похоже, но по-другому. Пожалуйста, смотрите уточненный вопрос и снимите отметку как дубликат, если это возможно.   -  person ryanve    schedule 29.04.2017
comment
@wiktor-stribiżew, не могли бы вы снова открыть? Это не дубликат.   -  person ryanve    schedule 09.05.2017
comment
@ryanve: Это это обман. Смотрите мой ответ там (соответствует всему, кроме) строки, равной некоторой части строки. Ваше решение: ^(?!(?:carrots|onions|corn)$) - будет соответствовать любой строке, не равной carrots, onoins, corn.   -  person Wiktor Stribiżew    schedule 09.05.2017
comment
@WiktorStribiżew Моя задача состоит в том, чтобы сопоставлять целые слова, а не подслова. Мой коллега выяснил, что правильный шаблон для этого: gist.github.com/ryanve/004dcaecf1fe4835345385b4d1500c78 У вас другое, а не то, о чем я просил в вопросе. Еще раз, пожалуйста, снова откройте, так как это ценно для сообщества.   -  person ryanve    schedule 09.05.2017
comment
Код /^(?!(corn|bread)$).+/.test('corn') равен /^(?!(corn|bread)$)/.test('corn'), только .+ требует как минимум char.   -  person Wiktor Stribiżew    schedule 09.05.2017
comment
.+ делает его другим. Пожалуйста, снова откройте.   -  person ryanve    schedule 09.05.2017


Ответы (1)


Используйте отрицательный прогноз:

^(?!.*(?:carrots|onions|corn))
person chazsolo    schedule 26.04.2017
comment
Это кажется близким, но также кажется, что частичные совпадения занесены в черный список. Я хочу занести в черный список только точные совпадения. /^(?!.*(?:carrots|onions|corn))/.test('corndog') является ложным, хотя я бы хотел, чтобы это было правдой, чтобы разрешить corndog. - person ryanve; 27.04.2017