我正在搜索涵盖此用例的正则表达式:
示例:
AB123456
->很好1A789563
->很好A2547896
->很好11111111
->不好我尝试过:
/^[a-zA-Z]{2}\d{6}$/
但这在开头允许两位数字。 谢谢您的帮助。
答案 0 :(得分:3)
您可以使用“详细说明”的正则表达式方法,在其中将grouping construct与alternation operators一起列出所有可能的变体:
^(?:[a-zA-Z][0-9]|[0-9][a-zA-Z]|[a-zA-Z]{2})[0-9]{6}$
或者,如果您的正则表达式引擎支持先行
^(?![0-9]{2})[0-9a-zA-Z]{2}[0-9]{6}$
请参见first regex demo和second regex demo。
^
在字符串的开头声明位置,然后(?:[a-zA-Z][0-9]|[0-9][a-zA-Z]|[a-zA-Z]{2})
non-capturing group匹配一个字母+数字,数字+字母或仅两个字母。然后,[0-9]{6}
匹配6位数字直到字符串($
)的末尾。
第二个正则表达式匹配字符串(^
)的开头,如果前两个字符是数字((?![0-9]{2})
),则匹配失败,然后匹配两个字母数字字符([0-9A-Za-z]{2}
),然后是六个数字([0-9]{6}
),并在字符串($
)的末尾声明位置。