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