Пароль REGEX с минимум 6 символами, как минимум одной буквой и одним числом и может содержать специальные символы

javascript asp.net regex

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 я написал эту скрипку, чтобы проверить его решение с небольшими изменениями, чтобы сделать его более наглядным:

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");
}

Кстати, это работает как шарм! ;)

с наилучшими пожеланиями и спасибо Jfriend00, конечно!

Автор: Hugo Размещён: 08.05.2014 02:16

2 плюса

Более элегантное и автономное регулярное выражение для соответствия этим (общим) требованиям к паролю:

^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d^a-zA-Z0-9].{5,50}$

Элегантность здесь является то , что вы не должны жестко кодировать символы , такие как $ @ # и т.д. Для того, чтобы принять все символы, вы просто говорите: «принимают также все не алфавитно - цифровых символов , а не чисел». Последняя часть регулярного выражения {5,50}может быть легко изменена и соответствует минимальному и максимальному количеству символов: в этом конкретном примере до 5 символов регулярное выражение возвращает несоответствие (т. Е. Для проверки требуется не менее 6 символов). Аналогично, после 50 символов он также возвращает несоответствие.

Автор: Albz Размещён: 28.03.2017 09:34

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:59

1 плюс

  1. Проверьте пароль от 7 до 16 символов, который содержит только символы, цифры, подчеркивание и первый символ должен быть буквой

    / ^ [A-Za-Z] \ ш {7,14} $ /

  2. Проверьте пароль длиной от 6 до 20 символов, который содержит хотя бы одну цифровую цифру, одну заглавную и одну строчную букву

    / ^ (? =. \ d) (? =. [az]) (? =. * [AZ]). {6,20} $ /

  3. Проверьте пароль длиной от 7 до 15 символов, который содержит хотя бы одну цифровую цифру и специальный символ

    / ^ (? =. [0-9]) (? =. [! @ # $% ^ & ]) [A-zA-Z0-9! @ # $% ^ & ] {7,15} $ /

  4. Проверьте пароль длиной от 8 до 15 символов, который содержит как минимум одну строчную букву, одну заглавную букву, одну цифровую цифру и один специальный символ

    / ^ (? =. \ d) (? =. [az]) (? =. [AZ]) (? =. [^ a-zA-Z0-9]) (?!. * \ s). { 8,15} $ /

Надеюсь, это кому-нибудь поможет. Для получения дополнительной информации, пожалуйста, проверьте эту статью и этот сайт regexr.com Автор: Joomler Размещён: 23.10.2017 12:24

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
Вопросы из категории :
32x32