我正在尝试测试输入中是否包含至少4个数字和1个字符。我有这个有效,但只有当字符符合0000a
的顺序时,无论顺序如何,我都希望它匹配,因此00a00
,a0000
,aa00a00a
都会匹配模式。
[0-9]{4,}[a-zA-Z]{1,}
我需要改变什么?我尝试了[a-zA-Z0-9]{5,}
,但之后aaaaa
和00012
之类的内容匹配,这是不合适的。
答案 0 :(得分:8)
答案 1 :(得分:0)
如果正式规则是:
"Numbers >= 4 AND characters == 1"
你将找不到正则表达式,因为角色可能无处不在。在这种情况下,您需要某种下推自动机或带计数器的算法。
如果规则是
"Numbers == 4 AND characters == 1"
以下内容(不易阅读)可能有效:
([a-zA-Z][0-9]{4,})|([0-9][a-zA-Z][0-9]{3,})|([0-9]{2,}[a-zA-Z][0-9]{2,})|([0-9]{3,}[a-zA-Z][0-9])|([0-9]{4,}[a-zA-Z])
如果ruls是 “(数字+字符)> = 4 AND字符> = 1”这可能有效:
([a-zA-Z]([a-zA-Z]|[0-9]){4,})|(([a-zA-Z]|[0-9])[a-zA-Z]([a-zA-Z]|[0-9]){3,})|(([a-zA-Z]|[0-9]){2,}[a-zA-Z]([a-zA-Z]|[0-9]){2,})|(([a-zA-Z]|[0-9]){3,}[a-zA-Z]([a-zA-Z]|[0-9]))|(([a-zA-Z]|[0-9]){4,}[a-zA-Z])
但由于机器人解决方案非常难看,我建议不要使用它们。实现一个小算法会更容易,更易读。