- ベストアンサー
Javaの正規表現で半角数字の文字列の判定について
- Javaの正規表現を使用して、文字列が半角数字のみで構成されているかどうかを判定したい場合、以下の2つのパターンを使用することができます。
- パターン1では、文字列の先頭から10~11回の[0-9]の繰り返しを判定し、最後が[0-9]の10~11回繰り返しで終わっているかをチェックします。
- パターン2では、文字列の先頭から終わりまでの間に[0-9]が1回以上繰り返されているかを判定します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
正規表現は、数学的な概念をもとに発展した技術なので、とっつきにくいですよね。 以下の説明で理解していただけると幸いです。 正規表現 "^[0-9]{10,11}$" とは ^ → 文字列の先頭0文字の「パターン」 → 記載は無いが、直前の「パターン」が1回くりかえし [0-9] → 文字コードが、0x30(0) から 0x39(9) に該当する1文字の「パターン」 {10,11} → 直前の「パターン」が「自分自身を含めて」10-11回くりかえし $ → 文字列の末尾0文字の「パターン」 → 記載は無いが、直前の「パターン」が1回くりかえし なので "0123456789a" が "^[0-9]{10,11}$" にマッチするかの判断 → パターン "^" の1回くりかえし → 該当するので OK → パターン "[0-9]" の10-11回くりかえし → "0123456789a" ではパターン外が含まれるので該当しない → "0123456789" なら、パターン10回くりかえしに該当するので OK → パターン "$" の1回くりかえし → "a" なので該当しない → ほかに候補が無いので、結果 false と判断
その他の回答 (2)
- Picosoft
- ベストアンサー率70% (274/391)
^, $の解釈が少しずれている気がします。 ^は「文字列の先頭が……」ではなく、「文字列の先頭」と考えた方がわかりやすいかと思います。 前から一つずつ分解して見ていきましょう。 ・^[0-9]{10,11}$ 「先頭」「0~9のどれか」「……が10~11回繰り返される」「末尾」 0123456789aがマッチしないのは、数字10桁の後ろが文字列の末尾でないからです。 「^[0-9]{10,11}」とするとマッチします。 ・^[0-9]+$ 「先頭」「0~9のどれか」「……が1回以上」「末尾」
- MVC
- ベストアンサー率42% (3/7)
^は、先頭から始まるという意味 $は、それで終わるという意味 {10,11}は、直前の表現が10か11ということ この場合は、[0-9]なので、0~9の文字 +は、直前の表現が1個以上あるということ "^[0-9]{10,11}” なら、"0123456789a" は正 "[0-9]{10,11}$”なら、"a0123456789" は正 "^[0-9]+$" は、1文字以上の数字だけであれば 正