Comment faire un regex pour reconnaître déclaration correcte des noms de variable
J'aimerais former un regex ro reconnaître la déclaration d'un nom de variable. Utilisateur de saisir une chaîne qu'ils aimeraient avoir comme nom de variable, et le programme doit vérifier si la variable est valide.
- Le premier caractère du nom de la variable doit être de l'alphabet ou un trait de soulignement. Il ne doit pas commencer par un chiffre.
- Pas de virgules et des espaces sont autorisés dans le nom de la variable.
- Pas de symboles spéciaux autres que le trait de soulignement sont autorisés dans le nom de la variable.
J'ai essayé pendant toute la journée et ne pouvait pas obtenir la bonne.
juste pour mémoire: java permet d'utiliser
$
dans n'importe quel endroit dans les noms de variablesOriginalL'auteur TK Cheah | 2013-07-10
Vous devez vous connecter pour publier un commentaire.
Première chose à faire est de recueillir une liste de tous les caractères valides pour le premier caractère:
Puis les autres personnages:
nous voulons correspondre à l'ensemble de la chaîne, et on peut avoir 0 ou plusieurs des autres personnages, donc la regex devient:
J'permettre de capital personnages du premier caractère dans la regex (ainsi que le signe du dollar), parce que c'est un test pour validité, pas pour la formation des variables. (Notez que les constantes de devrait être en majuscules, y compris la première lettre.)
textOrg.replace("!", "").replace("(", "").replace(",", "").replace(")", "").replace(".", "").replace("'", "").replace("&", "");
. Merci!pour cela, vous ne voulez pas correspondre à l'ensemble de la chaîne, juste la plage de caractères, de sorte que l'expression régulière à partir de ci-dessus serait simpified à
[!().,&]
et remplacer toutes les occurrences de ce avec""
OriginalL'auteur Alex Gittemeier
Vous pouvez utiliser ceci:
Comment cela fonctionne:
Remarque - selon Java Naming Convention, une variable doit pas commencer avec un lettre majuscule, donc je n'ai pas compris -
[A-Z]
dans la première classe de caractères.Aussi, depuis Java permet l'utilisation de
$
dans le nom de la variable, même au début, vous devriez envisager de l'ajouter à votre jeu de caractères autorisés. Donc, vous pouvez modifier le regex:\w
.)Ouais vous avez raison. C'est Java spécifique. Java nécessite le slash lui-même échappé.
Ah ok Merci 🙂 bon à savoir 😛
OriginalL'auteur Rohit Jain
Cela va faire ce que vous voulez:
Explication:
^
: commencer au début de la chaîne[a-z_]
: match d'une seule lettre minuscule ou un trait de soulignement\\w*
: correspond à zéro ou plusieurs caractères de mot (\w
est équivalent à[a-zA-Z_0-9]
)$
: match jusqu'à la fin de la chaîne.Modifier: mis à Jour pour refléter le "signe dollar permis" et "nom ne commence pas par "majuscules", fait remarquer par les autres. Merci pour le rappel.
Edit 2: Après avoir fait quelques recherches j'ai enlevé le correspondant pour les signes dollar de nouveau. Bien que techniquement admissible, c'est certainement mauvais style dans ce contexte et, par conséquent, découragé, tout comme les variables commençant par une lettre majuscule. Voir aussi https://stackoverflow.com/a/4636667/1814922
OriginalL'auteur creinig