1

次の形式を検証する正規表現をJavaで記述しようとしています-

XXXXXXXX_YZZZZ

どこ

X – alphanumeric characters(8 characters)
Y - alpha character
Z - numeric characters

私が最初の部分で試したことは -^[a-zA-Z0-9 ]*$しかし、2番目の部分に進む方法がわかりません。

必要な形式の正しい正規表現は何か教えてもらえますか?

4

8 に答える 8

5

金額とアンダースコアを指定するのを忘れていたと思います...

/^[a-z0-9]{8}_[a-z][0-9]{4}$/i
于 2013-01-29T10:15:42.343 に答える
4

JavaDocを見てください。そうすれば、要件を次のように変換できます。

"^\\p{Alnum}{8}_\\p{Alpha}\\p{Digit}{4}$"

質問にリストされているように、事前定義された文字クラスを使用します。

于 2013-01-29T10:22:12.340 に答える
2

これはどう?

^[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 部分を個別に処理できるようにします。

于 2013-01-29T10:16:52.240 に答える
2

この正規表現を試してください:

^[A-Za-z\d]{8}_[A-Za-z]\d{4}$

正規表現は、0 個以上の英数字および/または空白と一致します。

これは正規表現を学ぶのに適した場所です: http://www.regular-expressions.info

于 2013-01-29T10:17:00.977 に答える
1

この正規表現を試してください

^[a-zA-Z0-9]{8}[_][a-zA-Z][0-9]{4}$
于 2013-01-29T10:48:47.960 に答える
0

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}$"); 
于 2013-01-29T10:24:53.433 に答える
0

試す:

^[a-zA-Z0-9]{8}_[a-zA-Z][0-9]{4}$

Regexperはここであなたの友達です。

于 2013-01-29T10:16:36.030 に答える
0
^[a-zA-Z0-9]{8}_[a-zA-Z][0-9]{4}$
于 2013-01-29T10:19:27.930 に答える