web-dev-qa-db-fra.com

@Pattern pour la chaîne alphanumérique - Validation du bean

J'ai un nom de variable dans un bean. Je veux ajouter @Pattern validation pour accepter uniquement alphanumérique.

Actuellement, j'ai celui-ci.

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

Mais l'erreur est Invalid regular expression. J'ai essayé [A-Za-z0-9]. Mais cela ne fonctionne pas non plus. Aucune erreur cependant. Il montre que toute entrée valide a échoué.

14
Kevin Rave

Essayez-vous ce modèle: ^[A-Za-z0-9]*$

ou ^[A-Za-z0-9]+$ pour éviter des résultats vides.

Si vous souhaitez vérifier qu'une chaîne ne contient que des caractères spécifiques, vous devez ajouter des ancres (^ pour le début de la chaîne, $ pour la fin de la chaîne) pour être sûr que votre modèle correspond à toute la chaîne.

Les accolades ne servent qu'à écrire une quantité, exemple: je veux deux a:
a{2}
Vous ne pouvez pas mettre de lettres à l'intérieur. Les seuls cas où vous pouvez rencontrer des lettres entre crochets sont lorsque vous utilisez des classes de caractères unicode: \p{L}, \p{Greek}, \p{Arabian}, ...

30

De plus, vous pouvez utiliser une classe de caractères, qui peut être utilisée entre accolades, à savoir Alnum. Par exemple, pour un caractère alphanumérique d'une longueur comprise entre 1 et 32 ​​caractères inclus:

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

voir https://docs.Oracle.com/javase/7/docs/api/Java/util/regex/Pattern.html

3
user2066936