这几个小时我一直在"战斗"在这种情况下。我正试图检查车牌是否有效(在我的国家,这就像 99-KL-99 )。
该牌照有4条简单的规则:
字母或数字可以是随机的,如" 9F-P2-12"或" 99-JM-99"如果可能的话,我试图在没有OR条件的情况下尽可能简单地获得正则表达式,到目前为止我得到了这两个例子,我只需要一些改进就可以得到我想要的地方
第一名:
^^[a-zA-Z][0-9]{1}-[a-zA-Z][0-9]{1}-[a-zA-Z][0-9]{1}$
哪个符合此类" a1-b1-c1"或者" E4-A1-E8",但如果我想检查它是否有字母和数字,无论什么位置怎么办?我如何控制4个数字和2个字母的规则?
第二
^(?=.*1)(?=.*2)(?=.*3)
匹配" 123"," 321"等等。无论它们匹配什么位置,这都是我想要的。
我只需要使用它,我一直在尝试许多正则表达式,但仍然没有得到我需要的东西。
编辑:
现在我明白了:
^(\w\w)-(\w\w)-(\w\w)$
效果很好但是可以添加一个" AND"运营商?
之类的东西^(\ w \ w) - (\ w \ w) - (\ w \ w)$ AND 4个数字?和2个字母?
答案 0 :(得分:1)
您可以使用前瞻:
^(?=(?:.*\d.*){4})(?=(?:.*[A-Z].*){2})[A-Z0-9]{2}(?:-[A-Z0-9]{2}){2}$
其中:
^ <= ensure start of string
(?=(?:.*\d.*){4}) <= ensure that there is at least 4 digits
(?=(?:.*[A-Z].*){2}) <= ensure that there is at least 2 alpha
[A-Z0-9]{2}(?:-[A-Z0-9]{2}){2} <= specifies the format
$ <= ensure end of string
请参阅live demo
答案 1 :(得分:-1)
看了你的意见和建议后,我终于以一种简单的方式得到了它
(?=.*(\w\w)-(\w\w)-(\w\w)$)(?=(?:.*\d.*){4})(?=(?:.*[A-Z].*){2})