Comment puis-je écrire une regex qui ne correspond qu'à des lettres?
Utilisez un jeu de caractères: [a-zA-Z]
correspond à une lettre de A à Z en minuscule et en majuscule. [a-zA-Z]+
correspond à une ou plusieurs lettres et ^[a-zA-Z]+$
ne correspond qu'à des chaînes composées d'une ou plusieurs lettres uniquement (^
et $
marquent le début et la fin d'une chaîne, respectivement).
Si vous souhaitez faire correspondre d'autres lettres que A – Z, vous pouvez les ajouter au jeu de caractères suivant: [a-zA-ZäöüßÄÖÜ]
. Vous pouvez également utiliser des classes de caractères prédéfinies, telles que propriété de caractère Unicode class \p{L}
qui décrit les caractères Unicode qui sont des lettres.
\p{L}
correspond à tout ce qui est une lettre Unicode si vous êtes intéressé par des alphabets autres que le latin
En fonction de votre signification de "personnage":
[A-Za-z]
- toutes les lettres (majuscules et minuscules)
[^0-9]
- tous les caractères non numériques
L'option disponible la plus proche est
[\u\l]+
qui correspond à une séquence de lettres majuscules et minuscules. Cependant, il n'est pas supporté par tous les éditeurs/langues, il est donc probablement plus sûr d'utiliser
[a-zA-Z]+
comme le suggèrent d'autres utilisateurs
Vous utiliseriez
/[a-z]/gi
[] - vérifie s'il y a des caractères entre des entrées données
a-z --- couvre tout l'alphabet
g ----- globalement sur toute la chaîne
i ----- obtenir majuscules et minuscules
L’expression régulière que peu de gens ont écrite sous la forme "/ ^ [a-zA-Z] $/i" n’est pas correcte car, à la dernière mention, / i, qui est insensible à la casse et après correspondance pour première fois, il reviendra. Au lieu de / i, utilisez simplement / g, qui est pour global et vous n’aurez pas non plus besoin de mettre ^ $ pour commencer et terminer.
/[a-zA-Z]+/g
Pour PHP, cela fonctionnera bien
'/^[a-zA-Z]+$/'
/[a-zA-Z]+/
Exemple super simple. Les expressions régulières sont extrêmement faciles à trouver en ligne.
Java:
String s= "abcdef";
if(s.matches("[a-zA-Z]+")){
System.out.println("string only contains letters");
}
Utilisez simplement \w
ou [:alpha:]
. C’est une séquence d’échappement qui ne correspond qu’aux symboles pouvant figurer dans les mots.
Utiliser des groupes de caractères
\D
Correspond à n'importe quel caractère sauf les chiffres 0 à 9
^\D+$
Voir exemple ici
Si vous voulez parler de lettres dans n'importe quel codage de caractères, une bonne approche pourrait être de supprimer les lettres autres que les espaces \s
, digits \d
et d'autres caractères spéciaux tels que:
[!@#\$%\^&\*\(\)\[\]:;'",\. ...more special chars... ]
Ou utilisez la négation de la négation ci-dessus pour décrire directement n'importe quelle lettre:
\S \D and [^ ..special chars..]
Avantages:
Les inconvénients:
Vous pouvez essayer cette expression régulière: [^\W\d_]
ou [a-zA-Z]
.
motif =/[a-zA-Z] /
met "[a-zA-Z]: # {pattern.match (" mine blossom ")}" OK
met "[a-zA-Z]: # {pattern.match (" 456 ")}"
met "[a-zA-Z]: # {pattern.match (" ")}"
met "[a-zA-Z]: # {pattern.match (" # $% ^ & * ")}"
met "[a-zA-Z]: # {pattern.match (" # $% ^ & * A ")}" OK