web-dev-qa-db-ja.com

英数字文字列の@Pattern-Bean検証

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

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

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

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

14
Kevin Rave

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

または^[A-Za-z0-9]+$は、空の結果を回避します。

文字列に特定の文字のみが含まれていることを確認する場合は、アンカー(^は文字列の先頭、$(文字列の最後))パターンがすべての文字列に一致することを確認します。

中括弧は、量を書くためだけのものです。例:2つのaが必要です:
a{2}
中に文字を入れることはできません。中括弧内の文字に出会うことができるのは、Unicode文字クラスを使用する場合のみです:\p{L}\p{Greek}\p{Arabian}、...

30

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

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

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

3
user2066936