Пароль REGEX с минимум 6 символами, как минимум одной буквой и одним числом и может содержать специальные символы
61796 просмотра
6 ответа
Мне нужно регулярное выражение с условием:
- минимум 6 символов, максимум 50 символов
- должен содержать 1 письмо
- должен содержать 1 номер
- может содержать специальные символы, такие как! @ # $% ^ & * () _ +
В настоящее время у меня есть шаблон: (?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{6,50})$
Однако это не позволяет использовать специальные символы, есть ли у кого-нибудь хорошее регулярное выражение для этого?
Спасибо
Автор: Budiawan Источник Размещён: 12.11.2019 09:39Ответы (6)
61 плюса
Возможно, можно использовать одно регулярное выражение, но из-за этого сложно дать пользователю обратную связь, по которому не соблюдается правило. Более традиционный подход, подобный этому, дает вам обратную связь, которую вы можете использовать в пользовательском интерфейсе, чтобы сообщить пользователю, что правило 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");
}
Автор: jfriend00
Размещён: 21.10.2011 02:41
16 плюса
После ответа на Jfriend00 я написал эту скрипку, чтобы проверить его решение с небольшими изменениями, чтобы сделать его более наглядным:
и это код:
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");
}
Кстати, это работает как шарм! ;)
с наилучшими пожеланиями и спасибо Jfriend00, конечно!
Автор: Hugo Размещён: 08.05.2014 02:162 плюса
Более элегантное и автономное регулярное выражение для соответствия этим (общим) требованиям к паролю:
^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d^a-zA-Z0-9].{5,50}$
Элегантность здесь является то , что вы не должны жестко кодировать символы , такие как $ @ # и т.д. Для того, чтобы принять все символы, вы просто говорите: «принимают также все не алфавитно - цифровых символов , а не чисел». Последняя часть регулярного выражения {5,50}
может быть легко изменена и соответствует минимальному и максимальному количеству символов: в этом конкретном примере до 5 символов регулярное выражение возвращает несоответствие (т. Е. Для проверки требуется не менее 6 символов). Аналогично, после 50 символов он также возвращает несоответствие.
1 плюс
У меня есть регулярное выражение, но это немного сложно.
^(?:(?<Numbers>[0-9]{1})|(?<Alpha>[a-zA-Z]{1})|(?<Special>[^a-zA-Z0-9]{1})){6,50}$
Позвольте мне объяснить это и как проверить правильность проверенного пароля:
В регулярном выражении есть три названные группы. 1) «Числа»: будет соответствовать одному числу в строке. 2) «Альфа»: соответствует одному символу от «а» до «z» или от «А» до «Z» 3) «Специальный»: соответствует одному символу, не являющемуся «Альфа» или «Числа»
Эти три названные группы сгруппированы в альтернативную группу и {6,50}
рекомендуют машине регулярных выражений захватывать не менее 6 из упомянутых выше групп, но не более 50.
Чтобы убедиться, что введен правильный пароль, вы должны проверить, есть ли совпадение, и после этого, если совпадающие группы захватываются столько, сколько вы хотите. Я разработчик C # и не знаю, как это работает в javascript, но в C # вам придется проверить:
match.Groups["Numbers"].Captures.Count > 1
Надеюсь, это работает так же в JavaScript! Удачи!
Автор: Fischermaen Размещён: 21.10.2011 07:591 плюс
Проверьте пароль от 7 до 16 символов, который содержит только символы, цифры, подчеркивание и первый символ должен быть буквой
/ ^ [A-Za-Z] \ ш {7,14} $ /
Проверьте пароль длиной от 6 до 20 символов, который содержит хотя бы одну цифровую цифру, одну заглавную и одну строчную букву
/ ^ (? =. \ d) (? =. [az]) (? =. * [AZ]). {6,20} $ /
Проверьте пароль длиной от 7 до 15 символов, который содержит хотя бы одну цифровую цифру и специальный символ
/ ^ (? =. [0-9]) (? =. [! @ # $% ^ & ]) [A-zA-Z0-9! @ # $% ^ & ] {7,15} $ /
Проверьте пароль длиной от 8 до 15 символов, который содержит как минимум одну строчную букву, одну заглавную букву, одну цифровую цифру и один специальный символ
/ ^ (? =. \ d) (? =. [az]) (? =. [AZ]) (? =. [^ a-zA-Z0-9]) (?!. * \ s). { 8,15} $ /
0 плюса
Я использую это
export const validatePassword = password => {
const re = /^(?=.*[A-Za-z])(?=.*\d)[a-zA-Z0-9!@#$%^&*()~¥=_+}{":;'?/>.<,`\-\|\[\]]{6,50}$/
return re.test(password)
}
Автор: chii
Размещён: 10.04.2019 06:43
Вопросы из категории :
- javascript Как определить, какой из указанных шрифтов был использован на веб-странице?
- javascript Валидация клиентской стороны ASP.Net
- javascript Длина объекта JavaScript
- javascript Получение текста из выпадающего списка
- javascript Скрипт входа со скрытыми кнопками
- javascript Как автоматически изменить размер текстовой области с помощью Prototype?
- asp.net Контрольный список для проверки подлинности Windows IIS 6 / ASP.NET?
- asp.net .NET - получить протокол, хост и порт
- asp.net Как получить полный URL страницы, на которой я нахожусь в C #
- asp.net Как заставить Visual Studio заново создать файлы .designer для файлов aspx / ascx?
- asp.net Response.Redirect с POST вместо Get?
- regex Learning Regular Expressions
- regex Regex и unicode
- regex Мое регулярное выражение слишком подходит. Как мне это остановить?
- regex Как выполнить подстановку Perl для строки, сохранив оригинал?
- regex Замена n-го экземпляра совпадения с регулярным выражением в Javascript
- regex Как заменить простые URL ссылками?