[英]Password Regex (client side javascript)
我需要一个符合以下标准的正则表达式:
至少 7 个字母数字字符和 1 个特殊字符
我用这个:
^.*(?=.{7,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$!%^&+=]).*$
如果我输入 Password1,它工作正常。 但不适用于 PASSWORD1!。
不适用于:Stmaryshsp1tal!
我正在使用 Jquery 验证插件,我在其中指定了正则表达式。
当我使用正则表达式验证器并指定以下正则表达式时:
^.*(?=.{7,})(?=(.*\W){1,}).*$
它可以完美运行,没有任何问题。 当我在 Jquery 验证中设置此正则表达式时,我使用它不起作用。
请问有人可以对此有所了解吗? 我想了解为什么我的第一个正则表达式不起作用。
(?=.\d)(?=.[a-z])
尝试在同一位置匹配数字和字母数字字符。 请记住, (?=... )
不包含任何内容。
你想要的可能是:
^(?=.*\W)(?=(.*\w){7})
这与确认您的字符串同时匹配^.*\W
(至少一个特殊字符)和^(.*\w){7})
(7 个字母数字字符)完全相同。请注意,如果有更多字符,它也匹配.
作为快速测试正则表达式的好工具,我建议http://regexpal.com/ (无关系;))。 有时简化你的表达会有很大帮助。
那么您可能想尝试类似
^[a-zA-Z0-9@#$,%^&+=]{7,}$
更新 2现在包括数字
^.*(?=.{7,})(?=.*\d)(?=.*[a-zA-Z])(?=.*[@#$%^&+=.]).*$
这匹配:
... 但不是:
试试这个正则表达式:
\S*[@#$!%^&+=]+\S*(?<=\S{7,})
EDIT3:好的,这是最后一次编辑;)。
这也将匹配其他特殊字符。 因此,如果您不想限制有效字符的数量,请将\S
更改为所有有效字符的范围。
这是正则表达式,我认为它可以处理所有可能的组合..
^(?=.{7,})\w*[.@#$!%^&+=]+(\w*[.@#$!%^&+=]*)*$
这是此正则表达式的链接, http://regexr.com?2tuh5
它匹配Password1!
但不是PASSWORD1!
是这个条款:
(?=.*[a-z])
这需要密码中至少有一个小写字母。 该模式表示密码长度必须至少为 7 个字符,并且包含大小写字母、至少一个数字和至少一个@#$!%^&+=
。 PASSWORD1!
失败,因为其中没有小写字母。
第二个模式接受PASSWORD1!
因为这是一个非常非常弱的密码要求。 它所要求的只是密码是 7+ 个字符并且其中至少有一个特殊字符(除了_
)。 顺便说一下, {1,}
是不必要的。
如果我是你,我会避免削弱密码并保持原样。 如果出于某种原因我想允许全小写或全大写密码,我只需将其更改为
^(?=.*\d)(?=.*[a-zA-Z])(?=.*[@#$!%^&+=]).{7,}$
...因此不会比我必须的那样削弱密码要求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.