文字列が2〜3文字の正規表現を書いています。最初の文字は、A と H (大文字) の間のアルファベットでなければなりません。この文字の後には 1 から 12 までの数字が続く必要があります。
[A-H]{1}[1-12]{1,2}
これは、キー入力するときは問題A12
ありませんが、キー入力するときは問題ありませんA6
提案してください。
文字列が2〜3文字の正規表現を書いています。最初の文字は、A と H (大文字) の間のアルファベットでなければなりません。この文字の後には 1 から 12 までの数字が続く必要があります。
[A-H]{1}[1-12]{1,2}
これは、キー入力するときは問題A12
ありませんが、キー入力するときは問題ありませんA6
提案してください。
文字間の範囲として実装されているため、このような数字の範囲を指定することはできません。したがって、[1-12]
と同等であり、aまたは。の[12]
いずれかにのみ一致します。代わりに、次のことを試してください。1
2
[A-H](?:1[012]|[1-9])
説明は次のとおりです。
[A-H] # one letter from A to H
(?: # start non-capturing group
1[012] # 1 followed by 0, 1, or 2 (10, 11, 12)
| # OR
[1-9] # one digit from 1 to 9
) # end non-capturing group
{1}
元の正規表現のafter[A-H]
は不要で[A-H]{1}
あり[A-H]
、同等であることに注意してください。
正規表現にアンカーを追加することを検討することをお勧めします。そうしないと、のような文字列で部分的に一致することもありますA20
。文字列全体を一致させようとしている場合は、次を使用する必要があります。
\A[A-H](?:1[012]|[1-9])\z
より大きなテキスト内にある場合は、代わりに単語の境界を使用できます。
\b[A-H](?:1[012]|[1-9])\b
どうぞ:
^[A-H]([1-9]|1[0-2])$
あなたの質問の{1}は必要ありません。
正規表現は^と$で固定されています。これは、正規表現がライン上で唯一のものになる可能性があることを意味します。たとえば、A60とは一致しません