Je me demandais si je pouvais obtenir une expression régulière qui correspondrait à une chaîne ne comportant que des caractères alphabétiques, et uniquement ceux-ci.
Au lieu d'utiliser [A-Za-z]
utiliser [A-z]
Je me demandais si je pouvais obtenir une expression régulière qui correspondrait à une chaîne ne comportant que des caractères alphabétiques, et uniquement ceux-ci.
Vous pouvez utiliser n'importe laquelle de ces 2 variantes :
/^[A-Z]+$/i
/^[A-Za-z]+$/
pour correspondre à une chaîne d'entrée composée d'alphabets ASCII.
[A-Za-z]
correspondra à tous les alphabets (minuscules et majuscules).^
et $
s'assurera que rien d'autre que ces alphabets ne sera apparié.Code :
preg_match('/^[A-Z]+$/i', "abcAbc^Xyz", $m);
var_dump($m);
Sortie :
array(0) {
}
Cas de test est pour le commentaire de l'OP qu'il veut faire correspondre seulement si il y a 1 ou plusieurs alphabets présents dans l'entrée. Comme vous pouvez le voir dans le cas de test, les correspondances ont échoué parce qu'il y avait ^
dans la chaîne d'entrée abcAbc^Xyz
.
Note : Veuillez noter que la réponse ci-dessus ne correspond qu'aux alphabets ASCII et ne correspond pas aux caractères Unicode. Si vous voulez faire correspondre des lettres Unicode, utilisez :
/^\p{L}+$/u
Ici, \p{L}
correspond à tout type de lettre, quelle que soit la langue
Non, [A-z]
est erroné car il correspond à beaucoup d'autres caractères et pas seulement à [A-Za-z]
Si vous avez besoin d'inclure des caractères alphabétiques non-ASCII, et si votre regex supporte Unicode, alors
\A\pL+\z
serait la regex correcte.
Certains moteurs regex ne prennent pas en charge cette syntaxe Unicode mais autorisent l'utilisation de l'option \w
un raccourci alphanumérique pour faire correspondre également les caractères non ASCII. Dans ce cas, vous pouvez obtenir tous les caractères alphabétiques en soustrayant les chiffres et les caractères de soulignement de l'expression \w
comme ça :
\A[^\W\d_]+\z
\A
correspond au début de la chaîne, \z
à la fin de la chaîne ( ^
et $
correspondent également au début/à la fin des lignes dans certains langages comme Ruby, ou si certaines options regex sont définies).
En Ruby et dans d'autres langages qui supportent les classes de caractères POSIX dans les expressions entre parenthèses, vous pouvez faire simplement :
/\A[[:alpha:]]+\z/i
Cela correspondra aux caractères alpha dans toutes les langues de l'alphabet Unicode. C'est facile.
Plus d'informations : http://en.wikipedia.org/wiki/Regular_expression#Character_classes http://ruby-doc.org/core-2.0/Regexp.html
[a-zA-Z]
devrait faire ça très bien.
Vous pouvez faire référence l'antisèche .
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.
2 votes
Quelque chose comme /^[a-zA-Z]+$/ devrait fonctionner.
11 votes
Est
à
un caractère alphabétique selon votre définition ? Quelle langue utilisez-vous ?2 votes
Une chaîne vide doit-elle correspondre ?
0 votes
Non, une chaîne vide ne doit pas correspondre
1 votes
Une remarque importante : vous n'avez pas mentionné de langage ou d'outil dans lequel vous souhaitez utiliser la regex que vous demandez. Bien que les principes des regex soient les mêmes partout, la syntaxe n'est pas la même partout. Vous devez vous référer à l'endroit où vous voulez l'utiliser.
0 votes
Définissez ce que vous entendez par "caractère alphabétique". Une chaîne de caractères ne contient que des caractères alphabétiques. Doit-elle être acceptée ?