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!");
}

16voto

Ehsan Kazi Points 141

Utilisez cette option pour attraper les caractères spéciaux courants, à l'exception de .-_ .

/[!"`'#%&,:;<>=@{}~\$\(\)\*\+\/\\\?\[\]\^\|]+/

Si vous voulez inclure .-_ aussi, alors utilisez ceci :

/[-._!"`'#%&,:;<>=@{}~\$\(\)\*\+\/\\\?\[\]\^\|]+/

Si vous souhaitez filtrer les chaînes de caractères qui sont compatibles avec les URL et ne contiennent pas de caractères spéciaux ou d'espaces, utilisez ceci :

/^[^ !"`'#%&,:;<>=@{}~\$\(\)\*\+\/\\\?\[\]\^\|]+$/

Lorsque vous utilisez des modèles comme /[^A-Za-z0-9]/ Ensuite, vous commencerez à attraper des alphabets spéciaux comme ceux d'autres langues et certains alphabets accentués européens (comme é, í ).

10voto

Mohamed Yusuff Points 51

J'ai défini un modèle pour rechercher tous les caractères spéciaux ASCII compris entre 032 et 126, à l'exception des caractères alphanumériques. Vous pouvez utiliser quelque chose comme le modèle ci-dessous :

Pour trouver un caractère spécial :

[ -\/:-@\[-\`{-~]

Pour trouver le minimum de 1 et le maximum de n'importe quel nombre :

(?=.*[ -\/:-@\[-\`{-~]{1,})

Ces motifs comportent des caractères spéciaux compris entre 032 et 047, 058 et 064, 091 et 096, et 123 et 126.

8voto

Chuck Points 588

Voici ma variante de regex d'un caractère spécial :

String regExp = "^[^<>{}\"/|;:.,~!?@#$%^=&*\\]\\\\()\\[¿§«»¤°€¥£¢¡®©0-9_+]*$";

(code Java)

6voto

sam Points 43

Utilisez ce modèle d'expression régulière ("^[a-zA-Z0-9]*$"). Il valide les chaînes alphanumériques à l'exclusion des caractères spéciaux.

5voto

Serguei Fedorov Points 2001

Si vous ne vous fiez qu'aux caractères ASCII, vous pouvez vous contenter d'utiliser les plages hexagonales de la table ASCII. Voici une expression rationnelle qui récupérera tous les caractères spéciaux dans la plage suivante 33-47 , 58-64 , 91-96 , 123-126

[\x21-\x2F\x3A-\x40\x5B-\x60\x7B-\x7E]

Cependant, vous pouvez considérer les caractères spéciaux comme no des personnages normaux. Si nous adoptons cette approche, vous pouvez simplement faire ceci

^[A-Za-z0-9\s]+

Hower ce ne sera pas attrapé _ ^ et probablement d'autres.

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