Как сопоставить несколько слов в регулярном выражении
Просто простое регулярное выражение, которое я не знаю, как писать.
Регулярное выражение должно убедиться, что строка соответствует всем 3 словам. Я вижу, как сделать так, чтобы он соответствовал любому из 3:
/advancedbrain|com_ixxocart|p\=completed/
Но мне нужно убедиться, что все 3 слова присутствуют в строке.
Вот слова
- продвинутый мозг
- com_ixxocart
- p=завершено
3 answers
Используйте утверждения с оглядкой:
^(?=.*advancebrain)(?=.*com_ixxochart)(?=.*p=completed)
Будет соответствовать, если присутствуют все три термина.
Возможно, вам захочется добавить \b
рабочие границы вокруг ваших поисковых запросов, чтобы убедиться, что они совпадают как полные слова, а не подстроки других слов (например, advancebraindeath
), если вам нужно избежать этого:
^(?=.*\badvancebrain\b)(?=.*\bcom_ixxochart\b)(?=.*\bp=completed\b)
^(?=.*?p=completed)(?=.*?advancebrain)(?=.*?com_ixxocart).*$
Потратил слишком много времени на тестирование и доработку =/Ну что ж.. Все равно опубликую свой ответ
Используйте lookahead:
(?=.*\badvancebrain)(?=.*\bcom_ixxocart)(?=.*\bp=completed)
Порядок не будет иметь значения. Все три обязательны.