2010-03-03 113 views
23

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

的条件为“密码必须包含8个字符和至少一个数字,一个字母和一个独特的性格,如!#$%&? "

+0

密码规则不好。请参阅[参考 - 密码验证](https://stackoverflow.com/questions/48345922/reference-password-validation)以获取更多信息。 – ctwheels

回答

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

--- 

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

+1的解释 - 测试了几个例子,并在http://www.regular-expressions.info/javascriptexample.html – amelvin

+0

工作我厌倦了'acf23!&7h',它不验证它 – Andromeda

+0

不要忘记逃脱必要的字符... – Macmade

5

可以实现每个个性化需求很轻松地(例如,最少8个字符:.{8,}将匹配8个或更多字符)

要结合他们,你可以使用“正期待”到多个子表达式都适用于相同的内容喜欢的东西(?=.*\d.*).{8,}匹配一个(或多个)数字与前瞻,和。 8个或更多字符

所以:

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

记住逃跑元字符。

+1

你有几个毫无意义的“。*”在那里。你可以使用:(?=。* \ d)(?=。* [a-zA-Z])(?=。* [!#\ $%&\?])。{8,} –

+0

@TomLord我想测试一下......但你可能是对的(理由:当然,每个积极的前瞻只需要确认每种类型角色的一个实例)。 – Richard

+0

是的,我指出的主要原因是,如果你的正则表达式不匹配,那么如果你包含不必要的“,那么确定这个可能会大大地低效。*'s in there! –

7

试试这个

((?=.*\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”将增加可用于密码和坑可以更安全的字符范围。

+0

为什么你需要所有的(。*)?似乎工作得很好,如果你只是做了:(?= \ d *)(?= [az] *)(?= [AZ ] *)(?= [\ W] *)。{6,20} –

1

您可以为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,}$/

4

密码符合下列条件:

  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 
        */ 
    })();