2013-11-12 5 views
0

У меня есть следующие условия для проверки пароля.Regex для пароля: повторяющиеся символы

Длина пароля должна быть не менее восьми (8) символов. Пароль должен содержать как буквенные, так и цифровые символы. Пароль не может иметь повторяющиеся символы (например, AA, aa, 00, 11 и т. Д.).

Я пробовал с регулярным выражением, но без повторения символов. любые предложения

var passw = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8}$/; 
+1

Почему ?! Вы намеренно пытаетесь снизить энтропию своих паролей? Я не могу использовать «aardvark2» в качестве пароля? Случайно сгенерированные пароли теперь должны быть проверены, чтобы убедиться, что они не содержат повторяющихся символов? Здесь вы не повышаете безопасность. – deceze

+0

да .. вы правы .. но это специфическое требование. – user1037452

+0

Они пытаются заставить людей использовать пароли, такие как 'aaaa1111' – Barmar

ответ

1

Регулярное выражение, чтобы соответствовать повторяющихся символов является /(.)\1/.
Я бы просто сделал это как двухэтапную проверку, не нужно катить ее в одно регулярное выражение.
Как указано в комментариях, это только понижает пароль энтропии и, тем самым, безопасность.

1

Look aheads ваш друг:

^(?=.*\d)(?=.*[a-zA-Z])(?!.*(.)\1).{8,} 
+0

это занимает больше 8 символов, а также – user1037452

+0

@ user1037452 Предложение № 2 о вопросе: * Пароль должен быть * * по крайней мере ** восемь (8) символов длиной * – Bohemian

1

Спасибо ..got ответить ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*(.)\1).{8}$

Смежные вопросы