密码验证的正则表达式

IT技术 javascript regex
2021-01-13 10:36:01

任何人都可以帮助我创建用于密码验证的正则表达式。

条件是“密码必须包含 8 个字符和至少一个数字、一个字母和一个唯一字符,例如 !#$%&? "

6个回答
^.*(?=.{8,})(?=.*[a-zA-Z])(?=.*\d)(?=.*[!#$%&? "]).*$

---

^.*              : Start
(?=.{8,})        : Length
(?=.*[a-zA-Z])   : Letters
(?=.*\d)         : Digits
(?=.*[!#$%&? "]) : Special characters
.*$              : End
我厌倦了 'acf23!&7h' 并且它没有验证它
2021-03-14 10:36:01
如果您想基本上包含每个符号, (?=.*\W|_) 是否对符号更有效?
2021-03-14 10:36:01
+1 解释 - 用几个例子进行测试,并在regular-expressions.info/javascriptexample.html 上工作
2021-03-22 10:36:01
我如何length限制这个正则表达式?
2021-04-05 10:36:01
您不需要将 .* 放在匹配的开始和结束处。这是毫无意义的,并且会显着缩短运行时间(尤其是在无效匹配的情况下)。
2021-04-11 10:36:01

试试这个

((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[\W]).{6,20})

上述正则表达式说明:

(           # Start of group
  (?=.*\d)      #   must contains one digit from 0-9
  (?=.*[a-z])       #   must contains one lowercase characters
  (?=.*[\W])        #   must contains at least one special character
              .     #     match anything with previous condition checking
                {8,20}  #        length at least 8 characters and maximum of 20 
)           # End of group

“/W”会增加可用于密码的字符范围,坑会更安全。

为什么你需要所有的 (.*) ?如果你只是这样做似乎工作正常: (?=\d*)(?=[az]*)(?=[AZ]*)(?=[\W]*).{6,20}
2021-03-16 10:36:01

您可以很容易地满足每个单独的要求(例如,最少 8 个字符:.{8,}将匹配 8 个或更多字符)。

要组合它们,您可以使用“正向前瞻”将多个子表达式应用于相同的内容。类似于(?=.*\d.*).{8,}将一个(或多个)数字与前瞻匹配,以及 8 个或更多字符。

所以:

(?=.*\d.*)(?=.*[a-zA-Z].*)(?=.*[!#\$%&\?].*).{8,}

记住要转义元字符。

@TomLord 我想测试一下……但你很可能是对的(原因:当然,每个正向前瞻只需要确认每种类型字符的一个实例)。
2021-03-16 10:36:01
你有一些毫无意义的“.*”。你可以使用: (?=.*\d)(?=.*[a-zA-Z])(?=.*[!#\$%&\?]).{8,}
2021-03-27 10:36:01
是的,我指出这一点的主要原因是,如果您的正则表达式不匹配,那么如果您在其中包含不必要的“.*”,则确定这一点的效率可能会大大降低!
2021-04-10 10:36:01

具有以下条件的密码:

  1. 至少 1 位数字
  2. 至少 2 个特殊字符
  3. 至少 1 个字母字符
  4. 没有空格

    'use strict';
    (function() {
        var foo = '3g^g$';
    
        console.log(/^(?=.*\d)(?=(.*\W){2})(?=.*[a-zA-Z])(?!.*\s).{1,15}$/.test(foo));
    
        /**
         * (?=.*\d)         should contain at least 1 digit
         * (?=(.*\W){2})    should contain at least 2 special characters
         * (?=.*[a-zA-Z])   should contain at least 1 alphabetic character
         * (?!.*\s)         should not contain any blank space
         */
    })();
    
@mohammadjawadBarati,只是我个人的喜好。
2021-03-13 10:36:01
嗨@nasif-md-tanjim。你不允许密码包含空格,为什么?不好?对什么或哪里不好?
2021-04-08 10:36:01

您可以制作自己的正则表达式进行javascript验证;

        (/^
        (?=.*\d)                //should contain at least one digit
        (?=.*[a-z])             //should contain at least one lower case
        (?=.*[A-Z])             //should contain at least one upper case
        [a-zA-Z0-9]{8,}         //should contain at least 8 from the mentioned characters

        $/)

例子:- /^(?=.*\d)(?=.*[a-zA-Z])[a-zA-Z0-9]{7,}$/