Это кажется мне слишком сложным. В частности, я вижу несколько вещей, которые не будут работать:
- Ваше регулярное выражение будет недоступно для городов с буквами, не входящими в ASCII, например, " Мальмё " или 서울 и т. Д.
- Ваш валидатор паролей не позволяет использовать пробелы в пароле (что полезно для ввода парольных фраз), он даже не допускает цифр или знаков препинания, которые многие люди хотели бы ввести в свои пароли для дополнительной безопасности.
- Ваш адресный валидатор не пускает людей, которые живут в квартирах (Foo St 12/345)
(предполагается, что вы имели в виду "\." Вместо ".", Поскольку "." Соответствует чему угодно)
И так далее. В общем, я думаю, что чрезмерная зависимость от регулярных выражений для проверки не очень хорошая вещь. Возможно, вам лучше разрешить что-либо для этих полей и просто проверить их каким-либо другим способом.
Например, с адресами электронной почты: просто потому, что адрес действителен в соответствии со стандартом RFC, не означает, что вы действительно сможете отправлять на него электронную почту (или что это правильный адрес электронной почты) для человека). Единственный надежный способ подтвердить адрес электронной почты - это отправить ему электронное письмо и заставить человека нажать на ссылку или что-то в этом роде.
То же самое и с URL: просто потому, что он действителен в соответствии со стандартом, на самом деле не означает, что там есть веб-страница. Вы можете проверить URL, попытавшись выполнить фактический запрос на получение страницы.
Но мое личное предпочтение состояло бы в том, чтобы просто сделать возможный абсолютный минимум проверки и оставить все как есть. Пусть люди редактируют свой профиль (или что-то еще, что вы проверяете) на случай, если они допустят ошибку.