27

Bean に変数名があります。@Pattern英数字のみを受け入れるように検証を追加したい。

現在、私はこれを持っています。

 @NotNull
 @Pattern(regexp = "{A-Za-z0-9}*")
 String name;

しかし、エラーはInvalid regular expression. 私が試したもの[A-Za-z0-9]です。しかし、これも機能していません。エラーはありませんが。有効な入力はすべて失敗として表示されます。

4

2 に答える 2

45

このパターンを試してみませんか:^[A-Za-z0-9]*$

または^[A-Za-z0-9]+$空の結果を避けるために。

文字列に特定の文字のみが含まれていることを確認する場合は、パターンが文字列全体と一致することを確認するために、アンカー (^文字列の先頭、文字列の末尾) を追加する必要があります。$

中括弧は繰り返しを表すためにのみ使用されます。例: if I want two a:
a{2}
文字を中に入れることはできません。中括弧で囲まれた文字を見つけることができる唯一の状況は、UNICODE 文字クラスを使用する場合です: \p{L}(文字の場合L) \p{Greek}、、、\p{Arabian}...

于 2013-07-05T04:24:16.593 に答える
7

さらに、中かっこで使用できる文字クラス、つまり Alnum を使用することもできます。たとえば、長さが 1 ~ 32 文字の英数字の場合:

@Pattern(regexp = "^[\\p{Alnum}]{1,32}$")

https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.htmlを参照してください

于 2016-09-19T20:16:50.780 に答える