Ответ 1
У меня был похожий сценарий в Laravel, и я решил его следующим образом.
Пароль содержит символы как минимум из трех следующих пяти категорий:
- Английские заглавные буквы (A - Z)
- Английские строчные буквы (a - z)
- Базовые 10 цифр (0 - 9)
- Не буквенно-цифровые (например:!, $, # Или%)
- Юникод символы
Сначала нам нужно создать регулярное выражение и проверить его.
Ваше регулярное выражение будет выглядеть так:
^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\x])(?=.*[!$#%]).*$
Я проверил и подтвердил его на этом сайте. Тем не менее, действуйте по-своему и корректируйте соответственно. Это только пример регулярных выражений, вы можете манипулировать так, как хотите.
Итак, ваш окончательный код Laravel должен быть таким:
'password' => 'required|
min:6|
regex:/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\X])(?=.*[!$#%]).*$/|
confirmed',
Обновление Как отмечает @NikK в комментарии, в Laravel 5.6 значение пароля должно быть заключено в квадратные скобки массива, такие как
'password' => ['required',
'min:6',
'regex:/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\X])(?=.*[!$#%]).*$/',
'confirmed']
Я не тестировал его на Laravel 5.6, поэтому я доверяю @NikK, поэтому в настоящее время я перешел на работу с c #/. net и у меня мало времени на Laravel.
Примечание:
- Я протестировал и проверил его как на сайте регулярных выражений, так и в тестовой среде Laravel 5, и он работает.
- Я использовал min: 6, это необязательно, но всегда полезно иметь политику безопасности, отражающую различные аспекты, одним из которых является минимальная длина пароля.
- Я предлагаю вам использовать подтвержденный пароль, чтобы гарантировать, что пользователь вводит правильный пароль.
- В пределах 6 символов наше регулярное выражение должно содержать как минимум 3 буквы a-z или A-Z, а также число и специальный символ.
- Всегда проверяйте свой код в тестовой среде, прежде чем переходить к производству.
- Обновление: То, что я сделал в этом ответе, является просто примером пароля регулярного выражения
Некоторые онлайн-ссылки
- http://regex101.com
- http://regexr.com (другой вкус регулярного выражения)
- https://jex.im/regulex (визуализированное регулярное выражение)
- http://www.pcre.org/pcre.txt (регулярное выражение документации)
- http://www.regular-expressions.info/refquick.html
- https://msdn.microsoft.com/en-us/library/az24scfc%28v=vs.110%29.aspx
- http://php.net/manual/en/function.preg-match.php
- http://laravel.com/docs/5.1/validation#rule-regex
- https://laravel.com/docs/5.6/validation#rule-regex
Что касается вашего пользовательского сообщения проверки для правила регулярных выражений в Laravel, вот несколько ссылок, на которые можно посмотреть: