我的 (?=.*[a-z]{2}) 明确检查 2 个小字符。却吃不下
import re
char = 'Massas23#'
if re.search(r"^(?=.*[\d])(?=.*[A-Z])(?=.*[a-z]{2})(?=.*[@#$])[\w\d@#$]{6,12}$", char):
print ("match")
else:
print ("Not Match")
我的输出是匹配,预期是不匹配
请您参考如下方法:
也许,
^(?!.*[a-z]{3})(?=.*[\d])(?=.*[A-Z])(?=.*[a-z]{2})(?=.*[@#$])[\w\d@#$]{6,12}$
然后可能会工作。
(?!.*[a-z]{3})
表示不允许三个以上的连续小写。
Demo 1
测试
import re
char = 'Massas23#'
if re.search(r"^(?!.*[a-z]{3})(?=.*[\d])(?=.*[A-Z])(?=.*[a-z]{2})(?=.*[@#$])[\w\d@#$]{6,12}$", char):
print("match")
else:
print("Not Match")
如果您想简化/修改/探索表达式,在regex101.com 的右上面板中已对此进行了解释.如果你愿意,也可以在this link观看。 ,它将如何与一些样本输入相匹配。
正则表达式电路
jex.im可视化正则表达式:
我想我们并没有试图匹配 MAsSa23#,如果你想匹配它,
^(?!.*[a-z]{3})(?=.*[\d])(?=.*[A-Z])(?=.*[a-z]{1,2})(?=.*[@#$])[\w\d@#$]{6,12}$
会那样做。
