Essayer de comparer une entrée à 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'); }
Cependant, le code ci-dessous autorise les espaces.
Non, ça ne va pas. Cependant, elle ne correspond qu'aux entrées de longueur 1. Pour les entrées de longueur supérieure ou égale à 1, vous avez besoin d'un +
suivant la classe de personnage:
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.
Vous devriez n'utilisez pas String.match mais RegExp.prototype.test (c'est-à-dire /abc/.test("abcd")
) au lieu 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-_]+$/;
Vous avez une erreur stupide. Alors postez ici, si quelqu'un le trouve utile
-\._
- signifie trait d'union, point et trait de soulignement\.-_
- signifie que tous les signes sont compris entre le point et le trait de soulignementCette syntaxe est un peu plus concise que les réponses postées à ce jour et aboutit au même résultat:
let regex = /^[\w-]+$/;
Ne pas échapper au trait de soulignement. Peut-être causer un whackness.
Essaye ça
"[A-Za-z0-9_-]+"
Devrait permettre les traits de soulignement et les traits d'union