Javascript 密码模式的正则表达式

Javascript 密码模式的正则表达式,javascript,regex,Javascript,Regex,我想要下面的组合正则表达式 密码必须至少包含8个字符。至少有一个大写字母 字母,至少一个小写字母和至少一个数字 数字它可以包含特殊字符,但不能包含空格 目前我正在使用下面的正则表达式 /^.*((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(.*[!@#$%^&*()_+=])).*$/i 我想密码是在任何顺序。当前表达式允许我按顺序输入密码 提前感谢删除i修饰符和*,它存在于lookaheads之前,您还需要在character类中添加A-Za-z\d,以便它也能匹配字

我想要下面的组合正则表达式

密码必须至少包含8个字符。至少有一个大写字母 字母,至少一个小写字母和至少一个数字 数字它可以包含特殊字符,但不能包含空格

目前我正在使用下面的正则表达式

/^.*((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(.*[!@#$%^&*()_+=])).*$/i
我想密码是在任何顺序。当前表达式允许我按顺序输入密码


提前感谢

删除
i
修饰符和
*
,它存在于lookaheads之前,您还需要在character类中添加
A-Za-z\d
,以便它也能匹配字母和数字

/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[A-Za-z\d!@#$%^&*()_+=]{8,}$/
如果您使用
i
修饰符,它将使
(?=.*[A-Z])
部分变得毫无意义


这是一个模式密码示例

((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})
按照示例的说明进行操作:

(           # Start of group
(?=.*\d)        #   must contains one digit from 0-9
(?=.*[a-z])     #   must contains one lowercase characters
(?=.*[A-Z])     #   must contains one uppercase characters
(?=.*[@#$%])    #   must contains one special symbols in the list "@#$%"
          .     #   match anything with previous condition checking
         {6,20} #   length at least 6 characters and maximum of 20  
 )              # 

这可能会对您有所帮助吗?

您可以将其简化为使用Javascript和一些简单易懂的正则表达式:

function validPassword(password) {
    return password.length >= 8 // Length
        && !~password.indexOf(" ") // No spaces
        && password.match(/[A-Z]/) != null // One uppercase
        && password.match(/[a-z]/) != null // One lowercase
        && password.match(/[0-9]/) != null; // One numerical digit
}


就我个人而言,我读起来比读
/^.*(?=.*\d)(?=.[a-z])(?=.[a-z])(.[!@$%^&*())。$/I

这是您可以使用的正则表达式:

/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])\S{8,}$/

说明:

  • (?=.*\d)
    -要求字符串中包含数字
  • (?=.[a-z])
    -需要小写字母
  • (?=.[A-Z])
    -需要大写字母
  • \S{8,}
    -字符串应包含除空格以外的任何字符,至少出现8次
请注意锚定
^
$
,它们是不可或缺的。并且没有
i
修饰符,否则大写/小写的区别将不起作用

作为替代方案,要稍微优化正则表达式,我们可以使用:


我想让特殊字符成为可选的!!哎,这个,;ld将特殊字符作为可选字符。请注意,Avinash建议的正则表达式不允许使用
[
和许多其他特殊符号。不确定这是您需要的。为什么不使用空格?您应该只强制使用最小14个字符,最大50+或哈希使用的字符(如bcrypt).每个人都应该这样做。我在工作中维护了一个庞大的语法检查器脚本,并最终将其分解为几十个简单的正则表达式,而不是一个不可能理解的正则表达式。
/^(?=\D*\d)(?=[^a-z]*[a-z])(?=[^A-Z]*[A-Z])\S{8,}$/