#php #regex #string-length
#php #регулярное выражение #длина строки
Вопрос:
У меня есть регулярное выражение, которое было написано для меня для паролей:
~^[a-z0-9!@#$%^amp;*()]{8,16}$~i
Предполагается, что оно должно соответствовать строкам буквенно-цифровых символов и символов из 8-16 символов. Теперь мне нужно убрать требование к минимальной и максимальной длине, поскольку мне нужно разделить сообщения об ошибках для удобства пользователя — я попытался просто удалить часть {8,16}, но тогда это приведет к ее разрыву. Как бы мне это сделать? Заранее спасибо.
Ответ №1:
Я так понимаю, вы выполняете отдельные проверки на наличие слишком длинных или слишком коротких строк, и это регулярное выражение только проверяет, нет ли недопустимых символов. Это должно сработать:
~^[a-z0-9!@#$%^amp;*()] $~i
означает одно или более, *
означает ноль или больше; вероятно, не имеет значения, какое из них вы используете.
Я также избавился от некоторых ненужных обратных косых черт; ни один из этих символов не имеет особого значения в классе символов (то есть внутри квадратных скобок).