Редактирую регулярное выражение, которое не мое, не уверен, как настроить его под нужды

#php #regex #string-length

#php #регулярное выражение #длина строки

Вопрос:

У меня есть регулярное выражение, которое было написано для меня для паролей:

 ~^[a-z0-9!@#$%^amp;*()]{8,16}$~i
  

Предполагается, что оно должно соответствовать строкам буквенно-цифровых символов и символов из 8-16 символов. Теперь мне нужно убрать требование к минимальной и максимальной длине, поскольку мне нужно разделить сообщения об ошибках для удобства пользователя — я попытался просто удалить часть {8,16}, но тогда это приведет к ее разрыву. Как бы мне это сделать? Заранее спасибо.

Ответ №1:

Я так понимаю, вы выполняете отдельные проверки на наличие слишком длинных или слишком коротких строк, и это регулярное выражение только проверяет, нет ли недопустимых символов. Это должно сработать:

 ~^[a-z0-9!@#$%^amp;*()] $~i
  

означает одно или более, * означает ноль или больше; вероятно, не имеет значения, какое из них вы используете.

Я также избавился от некоторых ненужных обратных косых черт; ни один из этих символов не имеет особого значения в классе символов (то есть внутри квадратных скобок).