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

4voto

cdaiga Points 3650

Essayez :

(?i)^([[a-z][^a-z0-9\\s\\(\\)\\[\\]\\{\\}\\\\^\\$\\|\\?\\*\\+\\.\\<\\>\\-\\=\\!\\_]]*)$

(?i)^(A)$ : indique que l'expression régulière A n'est pas sensible à la casse.

[a-z] : représente tout caractère alphabétique de a à z .

[^a-z0-9\\s\\(\\)\\[\\]\\{\\}\\\\^\\$\\|\\?\\*\\+\\.\\<\\>\\-\\=\\!\\_] : représente tout caractère alphabétique sauf a à z les chiffres et les caractères spéciaux, c'est-à-dire les caractères accentués.

[[a-z][^a-z0-9\\s\\(\\)\\[\\]\\{\\}\\\\^\\$\\|\\?\\*\\+\\.\\<\\>\\-\\=\\!\\_]] : représente n'importe quel caractère alphabétique (accentué ou non) uniquement des caractères.

* : une ou plusieurs occurrences de la regex qui la précède.

3voto

Ash Points 616

Essayez d'utiliser ceci pour les mêmes choses - StringUtils.isAlphanumeric(value)

3voto

KayV Points 3131

Nous pouvons y parvenir en utilisant Pattern et Matcher comme suit :

Pattern pattern = Pattern.compile("[^A-Za-z0-9 ]");
Matcher matcher = pattern.matcher(trString);
boolean hasSpecialChars = matcher.find();

3voto

Voici mon expression régulière, que j'ai utilisée pour supprimer tous les caractères spéciaux d'une chaîne de caractères :

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

3voto

Energy Points 62

S'il vous plaît utilisez ceci c'est le plus simple.

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

https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

    StringBuilder builder = new StringBuilder(checkstring);
    String regex = "\\p{Punct}"; //Special character : `~!@#$%^&*()-_+=\|}{]["';:/?.,><
    //change your all special characters to "" 
    Pattern  pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(builder.toString());
    checkstring=matcher.replaceAll("");

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