Je me demandais si je pouvais obtenir une expression régulière qui correspondra à une chaîne qui n'a que des caractères alphabétiques, et cela seul.
à
caractère alphabétique correspond-il à votre définition? Quelle langue utilisez-vous?
Je me demandais si je pouvais obtenir une expression régulière qui correspondra à une chaîne qui n'a que des caractères alphabétiques, et cela seul.
à
caractère alphabétique correspond-il à votre définition? Quelle langue utilisez-vous?
Réponses:
Vous pouvez utiliser l'une de ces 2 variantes:
/^[A-Z]+$/i
/^[A-Za-z]+$/
pour correspondre à une chaîne d'entré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 correspondra.Code:
preg_match('/^[A-Z]+$/i', "abcAbc^Xyz", $m);
var_dump($m);
Production:
array(0) {
}
Le cas de test concerne le commentaire d'OP auquel il souhaite faire correspondre uniquement s'il y a un ou plusieurs alphabets présents dans l'entrée. Comme vous pouvez le voir dans le cas de test, les correspondances ont échoué car il y avait ^
dans la chaîne d'entrée abcAbc^Xyz
.
Remarque: veuillez noter que la réponse ci-dessus correspond uniquement aux alphabets ASCII et ne correspond pas aux caractères Unicode. Si vous souhaitez faire correspondre les lettres Unicode, utilisez:
/^\p{L}+$/u
Ici, \p{L}
correspond à tout type de lettre de n'importe quelle langue
\w is shorthand for A-Za-z
- pas vraiment, \w
est un raccourci pour[a-zA-Z0-9_]
Si vous devez inclure des caractères alphabétiques non ASCII, et si votre saveur regex prend en charge Unicode, alors
\A\pL+\z
serait la bonne regex.
Certains moteurs regex ne prennent pas en charge cette syntaxe Unicode mais permettent au \w
raccourci alphanumérique de correspondre également aux caractères non ASCII. Dans ce cas, vous pouvez obtenir tous les caractères alphabétiques en soustrayant des chiffres et des traits de soulignement \w
comme ceci:
\A[^\W\d_]+\z
\A
correspond au début de la chaîne, \z
à la fin de la chaîne ( ^
et $
correspond également au début / à la fin des lignes dans certaines langues comme Ruby, ou si certaines options de regex sont définies).
Cela correspondra à un ou plusieurs caractères alphabétiques:
/^[a-z]+$/
Vous pouvez le rendre insensible à la casse en utilisant:
/^[a-z]+$/i
ou:
/^[a-zA-Z]+$/
Dans Ruby et d'autres langages prenant en charge les classes de caractères POSIX dans les expressions entre crochets, vous pouvez faire simplement:
/\A[[:alpha:]]+\z/i
Cela correspondra aux caractères alpha dans toutes les langues de l'alphabet Unicode. Peasy facile.
Plus d'infos: http://en.wikipedia.org/wiki/Regular_expression#Character_classes http://ruby-doc.org/core-2.0/Regexp.html
[^[:alpha]]
.
[a-zA-Z]
devrait le faire très bien.
Vous pouvez référencer la feuille de triche .