Avant JavaScript 1.5 : ^[a-zA-Z_$][0-9a-zA-Z_$]*$
En anglais : Il doit commencer par un signe dollar, un trait de soulignement ou une des lettres de l'alphabet à 26 caractères, en majuscules ou en minuscules. Les caractères suivants (le cas échéant) peuvent être l'un de ces caractères ou un chiffre décimal.
JavaScript 1.5 et plus * : ^[\p{L}\p{Nl}$_][\p{L}\p{Nl}$\p{Mn}\p{Mc}\p{Nd}\p{Pc}]*$
Il est plus difficile de l'exprimer en anglais, mais il est conceptuellement similaire à l'ancienne syntaxe avec l'ajout que les lettres et les chiffres peuvent être de n'importe quelle langue. Après le premier caractère, sont également autorisés des caractères de soulignement supplémentaires (appelés collectivement "connecteurs") et des marques de combinaison de caractères supplémentaires ("modificateurs"). (Les autres symboles monétaires ne sont pas inclus dans cet ensemble étendu).
JavaScript 1.5 et plus permet également les séquences d'échappement Unicode, à condition que le résultat est un caractère qui serait autorisé dans l'expression régulière ci-dessus.
Les identificateurs ne doivent pas non plus être un mot actuellement réservé ou un mot dont on envisage l'utilisation future.
Il n'y a pas de limite pratique à la longueur d'un identifiant. (Les navigateurs varient, mais vous aurez sans risque 1000 caractères et probablement plusieurs ordres de grandeur de plus que cela).
Liens vers les catégories de personnages :
- Des lettres : Lu , Ll , Lt , Lm , Lo , Nl
(combiné dans le regex ci-dessus comme "L")
- Les marques de combinaison ("modificateurs") : Mn , Mc
- Des chiffres : Nd
- Connecteurs : Pc
* n.b. Cette regex Perl est destinée à décrire la syntaxe uniquement - elle ne fonctionnera pas en JavaScript, qui ne prend pas (encore) en charge les propriétés Unicode. (Il existe certains paquets tiers qui prétendent ajouter un tel support).
6 votes
Si vous cherchez simplement des symboles alternatifs, l'alphabet grec est valable (ex, )... ou si vous voulez vraiment mettre le bazar dans vos autres développeurs, vous pouvez opter pour l'alphabet anglais, mais dans une police de caractères alternative (par ex, ) ...également valable !