【发布时间】:2022-01-17 12:55:53
【问题描述】:
我需要检查密码是否符合以下规则:
- 至少 8 个字符(长度)
- 一个大写字母
- 一个小写字母
- 一个号码
- 一个特殊字符
- 不能包含“.”或“_”(棘手的部分)
例如:
- Bft$ns2E => 应该匹配
- H2od%^.,3 => 不应该匹配(注意“.”)
我试过了:
^(?=.*?[A-Z])(?=(.*[a-z]){1,})(?=(.*[\d]){1,})(?=(.*[\W]){1,})(?!.*\s).{8,}$
满足所有规则,除了最后一条(不能包含“.”或“_”)。正则表达式对我来说总是很痛苦,无法弄清楚如何做到这一点。
谢谢大家!
【问题讨论】:
-
如果您在正则表达式中苦苦挣扎 - 为什么要继续使用它。并不是说它的代码会运行很多次,所以即使拆分它的速度较慢,它也可能更易于维护。
-
我使用 api 和后端,我想在两个站点中验证密码,我不想在每个 lenguajes 中重复验证功能,我认为使用 ragex 更好。