javascript - 用于具有特定字符顺序的强密码的 Javascript 正则表达式
问题描述
我已经看到了强密码检查的答案,但我对字符出现的顺序有额外的要求。
密码应至少包含:
- 一个大写字母。
- 一个小写字母。
- 一个号码。
- 一个特殊字符。
顺序是:
- 应该以大写和小写字母开头。
- 后跟数字和/或字母字符。
- 最后,应该是一个特殊字符。
例如
- xyz1325@ 有效。
- aBcd123xYz# 也是有效的。
- @Xyz1234 无效。
- 1234Xyz@ 无效。
- Xyz@ 无效。
解决方案
在密码中引入特定的字符顺序使其相对更可预测,因此失去了它的强度,我建议你摆脱这个限制。不过,您可以使用此正则表达式来满足您的需求,
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[~!@#$%^&*])[a-zA-Z][a-zA-Z\d]*[~!@#$%^&*?<>]*$
解释:
^
--> 字符串开头(?=.*[a-z])
--> 确保密码至少有一个小写字母。(?=.*[A-Z])
--> 确保密码至少有一个大写字母。(?=.*\d)
--> 确保密码至少有一位。(?=.*[~!@#$%^&*])
--> 确保密码至少包含此集中的一个特殊字符。您可以在其中放入更多要视为特殊的字符。
现在是确保订单的部分。正如你所说,它应该以字母开头,因此我们需要第一个字符,
[a-zA-Z]
然后跟随它可以是字母或数字,因此您可以使用,
[a-zA-Z\d]*
最后你想要特殊字符,并通过你的这个语句“最后,应该是一个特殊字符”。我假设您不想将其限制为仅一个特殊字符,因此在正则表达式的末尾应该是这样的,
[~!@#$%^&*?<>]*
可以匹配一个或多个特殊字符。如果你真的只是想一个特殊的字符,那就让它[~!@#$%^&*?<>]
最后$
以停止匹配字符串结束。
希望这对你有用。或者,如果有任何其他疑问,请告诉我。
编辑
奖励: 如果您也想检查长度,可以使用以下方法:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[~!@#$%^&*])(?=.{6,18}$)[a-zA-Z][a-zA-Z\d]*[~!@#$%^&*?<>]*$
另外(?=.{6,18}$)
是确保您的正则表达式的长度在 6 到 18 之间。
@Pushpesh,如有错误请更正。
推荐阅读
- python - 在 python 中为大型数据集本地化时间的快速方法?
- html - 如何获得片段链接以在带有 的页面中工作
? - laravel - 关系多个模型
- ruby-on-rails - Rails/Webpacker 不工作
- r - RDCOMClient (Outlook) - ggplot
- spring - SimpleMessageListenerContainer Amazon SQS Pollinterval
- angular - mat-select multiple 从数组 Angular4 中设置选中的选项
- netsuite - 允许其接受分页符的 NETSuite PDF 模板有哪些要求?
- javascript - 画布 2d 网格显示不会显示
- linux - cp -sr 和 ln -s 的符号链接区别