Il ne fonctionne pas parce que kunjaaN-
est huit caractères, et vous vous limiter à 1..7
Pour un nom d'utilisateur, pourquoi ne pas augmenter la limite à quelque chose de décent?
Aussi, si vous voulez _
inclus, vous devez l'inclure dans votre classe de caractères.
Essayez cette regex:
^[a-zA-Z_-]{1,16}\z
Note:
A l'intérieur des classes de caractères, le caractère -
peut avoir une signification particulière. Par exemple, [a-z]
signifie 'la plage de caractères commençant par a
et se terminant par z
', tandis que [az-]
signifie 'soit a
soit z
ou -
'.
Pour créer un -
non spécial, vous pouvez le placer au début ou à la fin d'une classe, ou lui échapper avec une barre oblique inverse. [a\-z]
correspondra a
ou z
ou -
.
L'échappement est généralement préféré car il évite les accidents si des caractères supplémentaires sont ajoutés par inadvertance à la fin de la classe.
Mec, vous ai demandé ce que un trait de soulignement fait dans une expression rationnelle, maintenant vous demandez pourquoi vous ne pouvez pas correspondre à un trait de soulignement lorsque vous ne l'avez pas inclus dans le motif ??! – Ether
Wow La communauté PERL dans stackoverflow est assez hostile aux débutants ... de toute façon je pense que le problème était le {1,7} et non le _. – unj2
@kunjaan: seulement quelques uns. essayez de l'ignorer. – ysth