正则表达式用于密码验证

And*_*eda 27 javascript regex

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

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

Mac*_*ade 57

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

---

^.*              : Start
(?=.{8,})        : Length
(?=.*[a-zA-Z])   : Letters
(?=.*\d)         : Digits
(?=.*[!#$%&? "]) : Special characters
.*$              : End
Run Code Online (Sandbox Code Playgroud)

  • 你不需要在比赛的开始和结束时放置.*.这是毫无意义的,并且会导致运行时间明显变差(特别是在无效匹配的情况下). (7认同)

Roh*_*bey 8

试试这个

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

上述正则表达式的描述:

(           # 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
Run Code Online (Sandbox Code Playgroud)

"/ W"将增加可用于密码和坑的字符范围可以更安全.


Ric*_*ard 6

您可以轻松地完成每个要求(例如,最少8个字符:.{8,}将匹配8个或更多字符).

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

所以:

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

记住逃避元字符.


Nas*_*jim 5

密码具有以下条件:

  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
         */
    })();
    
    Run Code Online (Sandbox Code Playgroud)