次の形式を検証する正規表現をJavaで記述しようとしています-
XXXXXXXX_YZZZZ
どこ
X – alphanumeric characters(8 characters)
Y - alpha character
Z - numeric characters
私が最初の部分で試したことは -^[a-zA-Z0-9 ]*$
しかし、2番目の部分に進む方法がわかりません。
必要な形式の正しい正規表現は何か教えてもらえますか?
金額とアンダースコアを指定するのを忘れていたと思います...
/^[a-z0-9]{8}_[a-z][0-9]{4}$/i
JavaDocを見てください。そうすれば、要件を次のように変換できます。
"^\\p{Alnum}{8}_\\p{Alpha}\\p{Digit}{4}$"
質問にリストされているように、事前定義された文字クラスを使用します。
これはどう?
^[a-ZA-Z0-9]{8}\_[a-zA-Z][0-9]{4}$
結果をグループ化することもできます。
^([a-ZA-Z0-9]{8})\_([a-zA-Z])([0-9]{4})$
結果から X、Y、Z 部分を個別に処理できるようにします。
この正規表現を試してください:
^[A-Za-z\d]{8}_[A-Za-z]\d{4}$
正規表現は、0 個以上の英数字および/または空白と一致します。
これは正規表現を学ぶのに適した場所です: http://www.regular-expressions.info
この正規表現を試してください
^[a-zA-Z0-9]{8}[_][a-zA-Z][0-9]{4}$
Java では、メタ文字を使用して正規表現を表現できます。
"8abba778_a2012".matches("^\\w{8}_[a-z]\\d{4}$");
[編集] : @Jon Dvorak によると、回答を修正しています。実際、\w は寛大すぎて、アンダースコア文字 _ にも適用されます。正解 :
"8abba778_a2012".matches("^[a-zA-Z0-9]{8}_[a-z]\\d{4}$");
^[a-zA-Z0-9]{8}_[a-zA-Z][0-9]{4}$