Пароль REGEX с min 6 символами, по крайней мере, одной буквой и одним номером и может содержать специальные символы
Мне нужно регулярное выражение с условием:
- min 6 символов, не более 50 символов
- должен содержать 1 букву
- должен содержать 1 номер
- может содержать специальные символы, такие как! @# $% ^ & *() _ +
В настоящее время у меня есть шаблон: (?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{6,50})$
Однако он не допускает специальных символов, для кого-нибудь есть хорошее регулярное выражение для этого?
Спасибо
Ответы
Ответ 1
Возможно, может быть использовано одно регулярное выражение, но это затрудняет предоставление обратной связи с пользователем, для какого правила они не следуют. Более традиционный подход, подобный этому, дает вам обратную связь, которую вы можете использовать в пользовательском интерфейсе, чтобы сообщить пользователю, какое правило pwd не выполняется:
function checkPwd(str) {
if (str.length < 6) {
return("too_short");
} else if (str.length > 50) {
return("too_long");
} else if (str.search(/\d/) == -1) {
return("no_num");
} else if (str.search(/[a-zA-Z]/) == -1) {
return("no_letter");
} else if (str.search(/[^a-zA-Z0-9\!\@\#\$\%\^\&\*\(\)\_\+]/) != -1) {
return("bad_char");
}
return("ok");
}
Ответ 2
после ответа jfriend00 я написал эту скрипту, чтобы проверить его решение с некоторыми небольшими изменениями, чтобы сделать его более визуальным:
http://jsfiddle.net/9RB49/1/
и это код:
checkPwd = function() {
var str = document.getElementById('pass').value;
if (str.length < 6) {
alert("too_short");
return("too_short");
} else if (str.length > 50) {
alert("too_long");
return("too_long");
} else if (str.search(/\d/) == -1) {
alert("no_num");
return("no_num");
} else if (str.search(/[a-zA-Z]/) == -1) {
alert("no_letter");
return("no_letter");
} else if (str.search(/[^a-zA-Z0-9\!\@\#\$\%\^\&\*\(\)\_\+\.\,\;\:]/) != -1) {
alert("bad_char");
return("bad_char");
}
alert("oukey!!");
return("ok");
}
btw, его работа как шарм!;)
С уважением, спасибо jfriend00, конечно!
Ответ 3
Более элегантное и автономное регулярное выражение для соответствия этим (общим) требованиям к паролю:
^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d^a-zA-Z0-9].{5,50}$
Элегантный прикосновение здесь состоит в том, что вам не нужны символы жесткого кода, такие как [email protected]# и т.д. Чтобы принять все символы, вы просто говорите: "Примите также все не буквенно-цифровые символы, а не цифры".
Заключительная часть регулярного выражения {5,50}
может быть легко изменена и соответствует минимальному и максимальному числу символов: в этом конкретном примере до 5 символов регулярное выражение возвращает несоответствие (т.е. Для проверки требуется 6 символов). Аналогично, после 50 символов он также возвращает не совпадение.
Ответ 4
У меня есть регулярное выражение, но это немного сложно.
^(?:(?<Numbers>[0-9]{1})|(?<Alpha>[a-zA-Z]{1})|(?<Special>[^a-zA-Z0-9]{1})){6,50}$
Позвольте мне объяснить это и как проверить правильность тестового пароля:
В регулярном выражении есть три названные группы.
1) "Числа": будет соответствовать одному номеру в строке.
2) "Альфа": будет соответствовать одному символу от "a" до "z" или "A" до "Z"
3) "Специальный": будет соответствовать одному символу, не являющемуся "Альфа" или "Числа"
Эти три названные группы сгруппированы в альтернативную группу, а {6,50}
советует машине регулярных выражений для захвата как минимум 6 из упомянутых выше групп, но не более 50.
Чтобы обеспечить правильный ввод пароля, вам нужно проверить, есть ли совпадение, и после этого, если согласованные группы захватывают столько, сколько вам нужно. Я разработчик С# и не знаю, как это работает в javascript, но в С# вам нужно будет проверить:
match.Groups["Numbers"].Captures.Count > 1
Надеюсь, он работает одинаково в javascript! Удачи!
Ответ 5
-
Проверьте пароль от 7 до 16 символов, которые содержат только символы, числовые цифры, символ подчеркивания и первый символ должны быть буквами -
/^ [A-Za-Z]\ш {7,14} $/
-
Проверьте пароль от 6 до 20 символов, которые содержат по крайней мере одну цифровую цифру, одну прописную букву и одну строчную букву
/^ (? =.\Г) (? =. [А-г]) (? =. * [A-Z]). {6,20} $/
-
Проверьте пароль от 7 до 15 символов, которые содержат по крайней мере одну цифровую цифру и специальный символ
/^ (= [0-9]?.) (=?. [@# $% ^ & Амп;]) [! A-Za-Z0-9 @# $% ^ &] {7, 15} $/
-
Проверьте пароль от 8 до 15 символов, содержащих хотя бы одну строчную букву, одну заглавную букву, одну цифровую цифру и один специальный символ
/^ (? =.\D) (? =. [Аз]) (? =. [AZ]) (? =. [^ A-Za-Z0-9]) (?!. *\S). {8,15} $/
Надеюсь, это поможет кому-то. Для получения дополнительной информации, пожалуйста, проверьте статью и этот сайт regexr.com
Ответ 6
Я использую это
export const validatePassword = password => {
const re = /^(?=.*[A-Za-z])(?=.*\d)[[email protected]#$%^&*()~¥=_+}{":;'?/>.<,'\-\|\[\]]{6,50}$/
return re.test(password)
}