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}は 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

Everything you need here can be found in this quickstart guide. A straightforward solution would be [A-Za-z][A-Za-z]\d\d\d\d\d\d or [A-Za-z]{2}\d{6}.

If you want to accept only capital letters then replace [A-Za-z] with [A-Z].

于 2012-05-03T21:48:34.300 に答える