我需要以下标准的正则表达式:
Atleast 7个带有1个特殊字符的字母数字字符
我用过这个:
^.*(?=.{7,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$!%^&+=]).*$
如果输入Password1,它可以正常工作!但对PASSWORD1不起作用!。
不适用于:Stmaryshsp1tal!
我正在使用Jquery验证插件,我指定了正则表达式。
当我使用正则表达式验证器并指定以下正则表达式时:
^.*(?=.{7,})(?=(.*\W){1,}).*$
它完美无缺。当我在Jquery验证中设置这个正则表达式时,我使用它不起作用。
有人可以对此有所了解吗?我想明白为什么我的第一个正则表达式不起作用。
答案 0 :(得分:0)
(?=.\d)(?=.[a-z])
尝试匹配同一位置的数字和字母数字字符。请记住,(?= ... )
不会包含任何内容。
你想要的可能是:
^(?=.*\W)(?=(.*\w){7})
这与非常相似,你的字符串都匹配^.*\W
(至少一个特殊字符)和^(.*\w){7})
(7个字母数字字符。请注意,如果还有更多字符,它也匹配。
答案 1 :(得分:0)
作为快速测试正则表达式的好工具,我建议http://regexpal.com/(没有关系;))。有时简化表达会有很大帮助。
然后你可能想尝试像 ^[a-zA-Z0-9@#$!%^&+=]{7,}$
更新2 现在包括数字
^.*(?=.{7,})(?=.*\d)(?=.*[a-zA-Z])(?=.*[@#$%^&+=!]).*$
匹配:
......但不是:
答案 2 :(得分:0)
试试这个正则表达式:
\S*[@#$!%^&+=]+\S*(?<=\S{7,})
EDIT3:好的,这是最后一次编辑;)。
这也会与其他特殊字符相匹配。因此,如果您不限制有效字符的数量,请将\S
更改为所有有效字符的范围。
答案 3 :(得分:0)
这是正则表达式,我认为它可以处理所有可能的组合..
^(?=.{7,})\w*[.@#$!%^&+=]+(\w*[.@#$!%^&+=]*)*$
这是此正则表达式http://regexr.com?2tuh5
的链接答案 4 :(得分:0)
匹配Password1!
但不匹配PASSWORD1!
的原因是此条款:
(?=.*[a-z])
密码中至少需要一个小写字母。该模式表示密码长度必须至少为7个字符,并且包含大写和小写字母,至少一个数字,以及@#$!%^&+=
中的至少一个。 PASSWORD1!
失败,因为其中没有小写字母。
第二种模式接受PASSWORD1!
,因为它是一个远远弱于密码的要求。它要求的是密码是7个以上的字符,并且其中至少包含一个特殊字符(_
除外)。顺便说一下,{1,}
是不必要的。
如果我是你,我会避免削弱密码并保持原样。如果我出于某种原因想要允许全小写或全大写密码,我只需将其更改为
^(?=.*\d)(?=.*[a-zA-Z])(?=.*[@#$!%^&+=]).{7,}$
...因此不会削弱密码要求。