我正在尝试编写一些Regex,它将匹配12行字母(不区分大小写)。
例如,我希望它匹配123124ab234cdef234gh1111ijkL(12个字母),但不是abcdefgh1111ijk(11个字母)或abcdefgh1111ijkLM(13个字母)。我的想法是做了十二次嵌套前瞻:
(?=(.*[A-Za-z])(?=(.*[A-Za-z])(?=(.*[A-Za-z])(?=(.*[A-Za-z]).....))))
但这不起作用。也不是一个简单的十二字母匹配,因为字母不必是连续的:
[A-Za-z]{12}
非常感谢任何帮助。谢谢!
答案 0 :(得分:4)
这是一种方式:
^([^a-zA-Z]*[a-zA-Z]){12}[^a-zA-Z]*$
快速分解:
^ # match the start of the input
( # start group 1
[^a-zA-Z]* # match zero or more non-letter chars
[a-zA-Z] # match one letter
){12} # end group 1 and match exactly 12 times
[^a-zA-Z]* # match zero or more non-letter chars
$ # match the end of the input
请注意,[a-zA-Z]
仅匹配ASCII字母!字符'É'
将不匹配。因此,[^a-zA-Z]
匹配'É'
。