Нужна помощь: RegEx для пароля, содержащего цифры и специальные символы - PullRequest
1 голос
/ 19 ноября 2010

Мне нужна помощь с RegEx для пароля.Пароль должен содержать хотя бы один специальный символ (например, "§ $ & /!) И число.

Например, пароль типа" EdfA433 & "должен быть действительным, тогда как" aASEas§ö "не так, как он не содержитномер.

Пока у меня есть следующий RegEx:

^(?=.*[0-9])(?=.*[a-zA-Z]).{3,}$

Но этот, очевидно, проверяет только номер. Может ли кто-нибудь помочь?

Ответы [ 3 ]

2 голосов
/ 19 ноября 2010

Вам лучше использовать несколько более простых регулярных выражений: любой код, проверяющий что-либо подобное, не будет зависеть от производительности, и дополнительная сложность обслуживания с учетом более сложного регулярного выражения, вероятно, неоправданна.

Итак, на что я бы пошел:

var valid = foo.match(/[0-9]/) && foo.match(/["§$&/!]/);

Интересно, действительно ли вы хотите определить такие специальные символы: Это считается специальным символом?Считается ли ~ специальным символом?

2 голосов
/ 19 ноября 2010
 ^(?=.*\d)(?=.*\W).{3,}$

проверяет как минимум одну цифру (\d) и один не алфавитно-цифровой символ (\W). \W является инверсией \w, которая соответствует цифрам, буквам и подчеркиванию.

Если вы хотите включить подчеркивание в список «специальных символов», используйте

 ^(?=.*\d)(?=.*[\W_]).{3,}$
1 голос
/ 19 ноября 2010

Я бы разделил функцию, которая проверяет, является ли пароль «сложным», на несколько частей, и в каждой части я бы проверял одно условие.Вы можете увидеть некоторые сложные регулярные выражения в Daily WTF со сбросом пароля: http://thedailywtf.com/Articles/The-Password-Reset-Facade.aspx

...