137 votes

Modèle de Regex incluant tous les caractères spéciaux

Je veux écrire une expression régulière simple pour vérifier si un caractère spécial existe dans une chaîne de caractères donnée. Mon expression régulière fonctionne mais je ne sais pas pourquoi elle inclut aussi tous les chiffres, donc quand je mets un chiffre, elle renvoie une erreur.

Mon code :

//pattern to find if there is any special character in string
Pattern regex = Pattern.compile("[$&+,:;=?@#|'<>.-^*()%!]");
//matcher to find if there is any special character in string
Matcher matcher = regex.matcher(searchQuery.getSearchFor());

if(matcher.find())
{
    errors.rejectValue("searchFor", "wrong_pattern.SearchQuery.searchForSpecialCharacters","Special characters are not allowed!");
}

2voto

Anirudh Sharma Points 21

Vous pouvez utiliser une correspondance négative :

Pattern regex = Pattern.compile("([a-zA-Z0-9])*"); (pour zéro ou plusieurs caractères)

o

Pattern regex = Pattern.compile("([a-zA-Z0-9])+"); (Pour un ou plusieurs personnages)

1voto

danvasiloiu Points 510

Essaie ça. Cela fonctionne sur C#, cela devrait fonctionner sur java également. Si vous voulez exclure les espaces, ajoutez simplement \s là-dedans @"[^\p{L}\p{Nd}]+"

1voto

mlnbhargav Points 21

Pour trouver un nombre quelconque de caractères spéciaux, utilisez le motif regex suivant : ([^(A-Za-z0-9 )]{1,})

[^(A-Za-z0-9 )] signifie n'importe quel caractère à l'exception des alphabets, des chiffres et des espaces. {1,0} signifie un ou plusieurs caractères du bloc précédent.

0voto

Sareesh Krishnan Points 588

(^ \W $)

^ - début de la chaîne, \W - correspond à tout caractère autre qu'un mot [^a-zA-Z0-9_], $ - fin de la chaîne

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X