我正在尝试创建正则表达式,它将以任意顺序匹配4位数字和2个字母。字母可以大小写。
示例:
a1234B
17AF45
aR1307
任何建议将不胜感激。 谢谢。
答案 0 :(得分:4)
蛮力解决此问题的方法可能是仅使用两个积极的前瞻:
^(?=.*[A-Za-z].*[A-Za-z])(?=.*\d.*\d.*\d.*\d).{6}$
这将完全匹配两个字母(小写或大写)和四个数字,总共六个字符。
有关更深入的解释,请考虑一下先行内容:
^(?=.*[A-Za-z].*[A-Za-z])
这表示从字符串开始 assert (但不匹配),在字符串中的任何位置出现两个字母。假设这是真的,那么正则表达式引擎将评估下一个前瞻,该前瞻将检查四个数字。如果也是如此,那么只需匹配任意6个字符。由于前瞻性,那些匹配的字符只能是字母和数字。