128 votes

Alphanumérique, tiret et souligné, mais pas d'espaces expression régulière check Javascript

Essayer de comparer l'entrée avec une expression régulière.

Le champ doit uniquement autoriser les caractères alphanumériques, les tirets et les traits de soulignement et NE PAS autoriser les espaces.

Cependant, le code ci-dessous autorise les espaces.

Qu'est-ce que je rate?

 var regexp = /^[a-zA-Z0-9\-\_]$/;
var check = "checkme";
if (check.search(regexp) == -1)
    { alert('invalid'); }
else
    { alert('valid'); }
 

Merci d'avance.

190voto

Andy E Points 132925

Cependant, le code ci-dessous autorise les espaces.

Non, ça ne va pas. Cependant, il ne fera correspondre que les entrées de longueur 1. Pour les entrées de longueur supérieure ou égale à 1, vous avez besoin de + suivant la classe de caractères:

 var regexp = /^[a-zA-Z0-9-_]+$/;
var check = "checkme";
if (check.search(regexp) == -1)
    { alert('invalid'); }
else
    { alert('valid'); }
 

Notez que ni le - (dans ce cas) ni le _ doivent échapper.

19voto

sapht Points 1221

Vous devriez utiliser String.match () à la place de String.search () si vous ne vous intéressez qu'à une valeur booléenne. Vous devez également répéter votre classe de personnage, comme expliqué dans la réponse de Andy E:

 var regexp = /^[a-zA-Z0-9-_]+$/;
 

0voto

David Fells Points 3829

Ne pas échapper au trait de soulignement. Peut-être causer un whackness.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X