41

请协助正确的正则表达式匹配任意 2 个字母后跟 6 个整数的任意组合。

These would be valid: 
RJ123456
PY654321
DD321234

These would not
DDD12345
12DDD123
4

5 回答 5

98

[a-zA-Z]{2}\d{6}

[a-zA-Z]{2}表示两个字母 \d{6}表示 6 位数字

如果你只想要大写字母,那么:

[A-Z]{2}\d{6}

于 2012-05-03T21:40:30.573 回答
29

你可以尝试这样的事情:

[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

这确保了主题的每一侧都有一个单词边界。

正如@Phrogz 所指出的,您可以通过替换其他答案中的[0-9]for a来使表达式更简洁。\d

[a-zA-Z]{2}\d{6}
于 2012-05-03T21:40:28.777 回答
8

我取决于您使用的正则表达式语言是什么,但非正式地,它将是:

[:alpha:][:alpha:][:digit:][:digit:][:digit:][:digit:][:digit:][:digit:]

在哪里[:alpha:] = [a-zA-Z][:digit:] = [0-9]

如果您使用允许有限重复的正则表达式语言,则如下所示:

[:alpha:]{2}[:digit:]{6}

正确的语法取决于您使用的特定语言,但这就是想法。

于 2012-05-03T21:43:49.417 回答
3

根据您的正则表达式是否支持它,我可能会使用:

\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
于 2012-05-03T21:44:02.703 回答
3

您在此需要的一切都可以在此快速入门指南中找到。一个简单的解决方案是[A-Za-z][A-Za-z]\d\d\d\d\d\dor [A-Za-z]{2}\d{6}

如果您只想接受大写字母,请替换[A-Za-z][A-Z].

于 2012-05-03T21:48:34.300 回答