繁体   English   中英

密码正则表达式(客户端 javascript)

[英]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])(?=.*[@#$%^&+=.]).*$

这匹配:

  • Stmarysh3sptal,, password1,, PASSWORD1P!!!!!!@#^^ASSWORD1, 122ss121a212!!

... 但不是:

  • Password1, PASSWORD1PASSWORD1, PASSWORD,, Password!, 1221121212!! ETC

试试这个正则表达式:

\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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM