RegEx pour les caractères alphanumériques et underscores

Existe-t-il une expression régulière qui vérifie si une chaîne ne contient que des lettres majuscules et minuscules, des chiffres et des underscores _ ?

Pour trouver:

"^[a-zA-Z0-9_]*$"

Voir le demo.

Cela fonctionne pour les expressions régulières .NET, et probablement pour un grand nombre d’autres langages.

Explication :

  • ^ : début de la chaîne de caractères
  • [ : début d’un groupe de caractères
  • a-z : toute lettre minuscule
  • A-Z : toute lettre majuscule
  • 0-9 : tout chiffre
  • _ : underscores
  • ] : fin du groupe de caractères
  • * : zéro ou plusieurs caractères donnés
  • $ : fin de la chaîne de caractères

Si vous ne souhaitez pas autoriser les chaînes vides, utilisez + au lieu de *.

très courte:

/^\w+$/

\w est équivalent à [A-Za-z0-9_].

L’utilisation du quantificateur + permet de trouver un ou plusieurs caractères. Si vous souhaitez également accepter une chaîne vide, utilisez * à la place.

Vous voulez vérifier que chaque caractère correspond à vos besoins, c’est pourquoi nous utilisons :

[A-Za-z0-9_]

Vous pouvez même utiliser la version abrégée :

\w

Ce qui est équivalent (dans certaines versions de regex, donc vérifiez avant de l’utiliser). Ensuite, pour indiquer que la chaîne entière doit correspondre, vous utilisez :

^

Pour indiquer que la chaîne doit commencer par ce caractère, utilisez alors

$

pour indiquer que la chaîne doit se terminer par ce caractère. Utilisez ensuite

\w+ ou \w*

Pour indiquer « 1 ou plus », ou « 0 ou plus ». Si l’on met tout cela bout à bout, on obtient :

^\w*$

Utiliser

^([A-Za-z]|[0-9]|_)+$

…si vous voulez être explicite, ou… :

^\w+$

…si vous préférez la syntaxe concise (syntaxe Perl).

Voici comment procéder en PHP :

$regex = '/^[A-Za-z_][A-Za-z\d_]*$/'

Je pense que vous ne prenez pas en compte les caractères Unicode dans vos tests.

Par exemple, si vous devez prendre des caractères « é », « ã » ou « ü », l’utilisation de « \w » ne fonctionnera pas.

Vous pouvez utiliser cette RegEx:

^[A-ZÀ-Ýa-zà-ý0-9_]+$