Регулярные выражения: Объединение условий
Мне нужна ваша помощь. Я новичок в работе с регулярными выражениями. У меня есть три отдельных регулярных выражения.
- Только символы:
/^[!@#$%^&*]+$/ - Только числа:
/^\d+$/ - Только буквы:
/^[a-zA-Z]+$/
Как должно выглядеть регулярное выражение, чтобы все эти условия сбывались , не зависимо от порядка? Спасибо вам большое
Ответы (1 шт):
Их можно объединить при помощи логического ИЛИ |:
/^([!@#$%^&*]+|\d+|[a-zA-Z]+)$/
Пример на regex101 -- выполняется какое-либо одно из условий -- только символы, только цифры или только буквы.
Если нужно проверить, чтобы были как минимум одна буква, одна цифра и один символ, следует применить позитивный просмотр вперёд (positive lookahead) (?=), тогда минимальная возможная длина будет 3 символа:
/^(?=.*?[A-Za-z])(?=.*?\d)(?=.*?[!@#$%^&*]).{3,}$/
В простейшем случае объединение может подразумевать, что должен быть один любой символ:
/^[\dA-Za-z!@#$%^&*]+$/