2024-09-27 17:37:08 发布
网友
这里我的(?=.*[a-z]{2})显式地检查2个小字符。但不能接受
(?=.*[a-z]{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")
我的输出是Match,预期是Not Match
Match
Not Match
也许吧
^(?!.*[a-z]{3})(?=.*[\d])(?=.*[A-Z])(?=.*[a-z]{2})(?=.*[@#$])[\w\d@#$]{6,12}$
那就行了。你知道吗
(?!.*[a-z]{3})
表示不允许超过三个连续的小写字母。你知道吗
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#,如果你想匹配的话
MAsSa23#
^(?!.*[a-z]{3})(?=.*[\d])(?=.*[A-Z])(?=.*[a-z]{1,2})(?=.*[@#$])[\w\d@#$]{6,12}$
我会这么做的。你知道吗
您可以从character类中省略小写字符,然后正好匹配2个小写字符a-z
例如,可以使用contrast使用求反字符类来匹配非数字。你知道吗
^(?=.{6,12}$)(?=[^\d\s]*\d)(?=[^A-Z\s]*[A-Z])(?=[^@#$\s]*[@#$])[A-Z0-9_@#$]*[a-z][A-Z0-9_@#$]*[a-z][A-Z0-9_@#$]*$
^
(?=.{6,12}$)
(?=[^\d\s]*\d)
(?=[^A-Z\s]*[A-Z])
(?=[^@#$\s]*[@#$])
[A-Z0-9_@#$]*[a-z][A-Z0-9_@#$]*[a-z][A-Z0-9_@#$]*
$
Regex demo
请注意
[\d]
[\w\d@#$]
\w
\d
也许吧
那就行了。你知道吗
表示不允许超过三个连续的小写字母。你知道吗
Demo 1
测试
如果您希望简化/修改/探索表达式,在regex101.com的右上面板中已经解释过了。如果您愿意,还可以在this link中查看它如何与一些示例输入匹配。你知道吗
正则表达式电路
jex.im可视化正则表达式:
我想我们不是想匹配
MAsSa23#
,如果你想匹配的话我会这么做的。你知道吗
Demo 2
您可以从character类中省略小写字符,然后正好匹配2个小写字符a-z
例如,可以使用contrast使用求反字符类来匹配非数字。你知道吗
^
字符串开头(?=.{6,12}$)
断言6-12个字符(?=[^\d\s]*\d)
断言一个数字(?=[^A-Z\s]*[A-Z])
断言一个大写字符(?=[^@#$\s]*[@#$])
断言一个特殊字符[A-Z0-9_@#$]*[a-z][A-Z0-9_@#$]*[a-z][A-Z0-9_@#$]*
匹配2个小写a-z$
字符串结尾Regex demo
请注意
[\d]
不必在方括号之间[\w\d@#$]
\w
也匹配\d
,因此可以从character类中省略它相关问题 更多 >
编程相关推荐