【发布时间】:2019-09-25 11:20:26
【问题描述】:
我一直在尝试为这项任务学习正则表达式。我已经使用前瞻来找到这三个条件。
- 检查小写
(?=.*[a-z]) - 检查大写
(?=.*[A-Z]) - 检查数字
(?=.*[0-9])
这个案例工作正常。当我结合我得到
(?=.\*\d)(?=.\*[a-z])(?=.*[A-Z])
这对于包含数字、a-z 和 A-Z 的任何字符串都返回 true。但我只需要包含字母数字的正则表达式。我试过这个正则表达式
^(?=.\*\d)(?=.\*[a-z])(?=.*[A-Z])$
但这不起作用。任何人都可以帮助解释为什么这个正则表达式不适用于组合。
编辑:
我的疑问是为什么 ^ 和 $ 在我组合时不起作用
【问题讨论】:
-
我查过了。我不明白为什么我的正则表达式不起作用。那里没有解释
-
Lookarounds 只是寻找匹配,但实际上不消耗任何字符。您的正则表达式只是缺少实际使用字符的部分,即您需要将
.{8,}放在$之前的部分,假设您的密码至少需要 8 个字符。 -
您不应限制密码包含非字母数字字符。那只会让他们不那么安全。而且几乎没有充分的理由这样做。
-
抱歉,我错过了那部分
标签: regex