请协助正确的RegEx匹配。任何2个字母后跟6个整数的任意组合。
These would be valid:
RJ123456
PY654321
DD321234
These would not
DDD12345
12DDD123
答案 0 :(得分:65)
[a-zA-Z]{2}\d{6}
[a-zA-Z]{2}
表示两个字母
\d{6}
表示6位数
如果您只想要大写字母,那么:
[A-Z]{2}\d{6}
答案 1 :(得分:18)
您可以尝试这样的事情:
[a-zA-Z]{2}[0-9]{6}
以下是表达式的细分:
[a-zA-Z] # Match a single character present in the list below
# A character in the range between “a” and “z”
# A character in the range between “A” and “Z”
{2} # Exactly 2 times
[0-9] # Match a single character in the range between “0” and “9”
{6} # Exactly 6 times
这将匹配主题中的任何位置。如果您需要围绕主题的边界,那么您可以执行以下任一操作:
^[a-zA-Z]{2}[0-9]{6}$
确保整个主题匹配。即在主题之前或之后没有任何内容。
或
\b[a-zA-Z]{2}[0-9]{6}\b
确保主题的每一侧都有word boundary。
正如@Phrogz所指出的那样,你可以通过替换[0-9]
\d
和其他一些答案来使表达更加简洁。
[a-zA-Z]{2}\d{6}
答案 2 :(得分:6)
我取决于您使用的正则表达式语言是什么,但非正式地说,它将是:
[:alpha:][:alpha:][:digit:][:digit:][:digit:][:digit:][:digit:][:digit:]
其中[:alpha:] = [a-zA-Z]
和[:digit:] = [0-9]
如果使用允许有限重复的正则表达式语言,则看起来像:
[:alpha:]{2}[:digit:]{6}
正确的语法取决于您使用的特定语言,但这就是想法。
答案 3 :(得分:3)
您需要的所有内容都可以在this quickstart guide中找到。
一个简单的解决方案是[A-Za-z][A-Za-z]\d\d\d\d\d\d
或[A-Za-z]{2}\d{6}
。
如果您只想接受大写字母,请将[A-Za-z]
替换为[A-Z]
。
答案 4 :(得分:2)
根据您的正则表达式支持它,我可能会使用:
\b[A-Z]{2}\d{6}\b # Ensure there are "word boundaries" on either side, or
(?<![A-Z])[A-Z]{2}\d{6}(?!\d) # Ensure there isn't a uppercase letter before
# and that there is not a digit after