Потому что с ls <path>/
вы просите ls
перечислить файлы <path>
. Но с помощью ls <path>/*horiz
оболочка расширяет звездочку до фактического списка файлов, например
ls <path>/<prefix1>horiz <path>/<prefix2>horiz ... <path>/<prefixN>horiz
, но этот список слишком длинный для одной строки оболочки, поэтому выдает ошибку. ]
(?=(.*\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,}$)
потребности быть на первом месте.
Это получит Вас 2 минимальных цифры, 2 минимальных символа, и минута 8 длин знака... Я отказываюсь показывать Вам, как не позволить пользователям иметь неалфавитно-цифровые символы в своих паролях, почему сайты хотят осуществить меньше безопасных паролей?
^(?=.*\d{2})(?=.*[a-zA-Z]{2}).{8,}$
Как насчет одного из существующих основанных на jQuery блоков проверки допустимости надежности пароля - как: http://scripts.simplythebest.net/4/Ajax-Password-Strength-Meter-software.html