Essayer de vérifier l'entrée par rapport à une expression régulière.
Le champ ne doit autoriser que les caractères alphanumériques, les tirets et les traits de soulignement et ne doit 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'); }
javascript
regex
À M
la source
la source
Réponses:
Non, ce n'est pas le cas. Cependant, il ne correspondra qu'à une entrée d'une longueur de 1. Pour les entrées d'une longueur supérieure ou égale à 1, vous devez
+
suivre 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_
besoin de s'échapper.la source
Vous ne devez pas utiliser String.match mais RegExp.prototype.test (c'est-à-dire
/abc/.test("abcd")
) au lieu de String.search () si vous n'êtes intéressé que par une valeur booléenne. Vous devez également répéter votre classe de personnage comme expliqué dans la réponse d'Andy E:var regexp = /^[a-zA-Z0-9-_]+$/;
la source
RegExp.prototype.test
méthode si vous n'êtes intéressé que par un booléen.Cette syntaxe est un peu plus concise que les réponses qui ont été postées jusqu'à présent et aboutit au même résultat:
let regex = /^[\w-]+$/;
la source
Vous avez une erreur stupide. Alors postez ici, si quelqu'un le trouve utile
-\._
- signifie trait d'union, point et trait de soulignement\.-_
- signifie tous les signes compris entre le point et le trait de soulignementla source
N'échappez pas au trait de soulignement. Cela pourrait causer un peu de mal.
la source
\_
problèmes, en JavaScript ou dans toute autre saveur regex.Essaye ça
"[A-Za-z0-9_-]+"
Devrait autoriser les traits de soulignement et les tirets
la source
essayez celui-ci, cela fonctionne très bien pour moi.
"^([a-zA-Z])[a-zA-Z0-9-_]*$"
la source