Блок проверки допустимости регулярного выражения ASP.NET (надежность пароля)

Потому что с ls <path>/ вы просите ls перечислить файлы <path>. Но с помощью ls <path>/*horiz оболочка расширяет звездочку до фактического списка файлов, например

ls <path>/<prefix1>horiz <path>/<prefix2>horiz ... <path>/<prefixN>horiz

, но этот список слишком длинный для одной строки оболочки, поэтому выдает ошибку. ]

10
задан Peter Mortensen 17 January 2011 в 19:36
поделиться

3 ответа

(?=(.*\W.*){0,}) не 0 неалфавитно-цифровых символов. Это - по крайней мере 0 неалфавитно-цифровых символов. Если бы Вы хотели, чтобы пароль не содержал какие-либо неалфавитно-цифровые символы, то Вы могли бы сделать также (?!.*\W) или (?=\w*$).

Простое решение состояло бы в том, чтобы пропустить \W предвидение и использование \w{8,} вместо .{8,}.

Кроме того, \w включает \d. Если бы Вы хотели просто альфу, то Вы могли бы сделать также [^\W\d] или [A-Za-z].

/^(?=(?:.*?\d){2})(?=(?:.*?[A-Za-z]){2})\w{8,}$/

Это проверило бы пароль, чтобы содержать по крайней мере две цифры, две альфы, быть по крайней мере 8 символами долго и содержать только алфавитно-цифровые символы (включая подчеркивание).

  • \w = [A-Za-z0-9_]
  • \d = [0-9]
  • \s = [ \t\n\r\f\v]

Править: Для использования этого во всех браузерах, вероятно, необходимо сделать что-то вроде этого:

var re = new RegExp("^(?=(?:.*?\\d){2})(?=(?:.*?[A-Za-z]){2})\\w{8,}$");
if (re.test(password)) { /* ok */ }

Edit2: недавнее обновление в вопросе почти делает недействительным мой целый ответ. ^^;;

Необходимо все еще смочь использовать код JavaScript в конце при замене шаблона тем, что Вы имели первоначально.

Edit3: хорошо. Теперь я вижу то, что Вы имеете в виду.

/^(?=.*[a-z].*[a-z])(?=.*[0-9].*[0-9]).{3,}/.test("password123") // matches
/^(?=.*[a-z].*[a-z])(?=.*[0-9].*[0-9]).{4,}/.test("password123") // does not match
/^(?=.*[a-z].*[a-z]).{4,}/.test("password123")                   // matches

Это кажется (?= ) не действительно нулевая ширина в Internet Explorer.

http://development.thatoneplace.net/2008/05/bug-discovered-in-internet-explorer-7.html

Edit4: Больше чтения: http://blog.stevenlevithan.com/archives/regex-lookahead-bug

Я думаю, что это может решить Вашу проблему:

/^(?=.{8,}$)(?=(?:.*?\d){2})(?=(?:.*?[A-Za-z]){2})(?=(?:.*?\W){1})/
new RegExp("^(?=.{8,}$)(?=(?:.*?\\d){2})(?=(?:.*?[A-Za-z]){2})(?=(?:.*?\\W){1})")

(?=.{8,}$) потребности быть на первом месте.

15
ответ дан 3 December 2019 в 23:52
поделиться

Это получит Вас 2 минимальных цифры, 2 минимальных символа, и минута 8 длин знака... Я отказываюсь показывать Вам, как не позволить пользователям иметь неалфавитно-цифровые символы в своих паролях, почему сайты хотят осуществить меньше безопасных паролей?

^(?=.*\d{2})(?=.*[a-zA-Z]{2}).{8,}$
1
ответ дан 3 December 2019 в 23:52
поделиться

Как насчет одного из существующих основанных на jQuery блоков проверки допустимости надежности пароля - как: http://scripts.simplythebest.net/4/Ajax-Password-Strength-Meter-software.html

-3
ответ дан 3 December 2019 в 23:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: