Question Vérifiez si une chaîne correspond à une regex dans JS


Je veux utiliser JavaScript (peut être avec jQuery) pour faire une validation côté client pour vérifier si une chaîne correspond à l'expression régulière:

^([a-z0-9]{5,})$

Idéalement, ce serait une expression renvoyée vrai ou faux.

Je suis un débutant JavaScript, fait match() fais ce dont j'ai besoin Il semble vérifier si une partie d'une chaîne correspond à une regex, pas la totalité.


470
2017-07-06 21:08


origine


Réponses:


Utilisation regex.test() si tout ce que vous voulez est un résultat booléen:

/^([a-z0-9]{5,})$/.test('abc1');   // false

/^([a-z0-9]{5,})$/.test('abc12');   // true

/^([a-z0-9]{5,})$/.test('abc123');   // true

... et vous pourriez enlever le () de votre expression rationnelle, car vous n'avez pas besoin d'une capture.


788
2017-07-06 21:10



Utilisation test() méthode :

var term = "sample1";
var re = new RegExp("^([a-z0-9]{5,})$");
if (re.test(term)) {
    console.log("Valid");
} else {
    console.log("Invalid");
}

108
2018-02-16 06:25



Vous pouvez utiliser match() ainsi que:

if (str.match(/^([a-z0-9]{5,})$/)) {
    alert("match!");
}

Mais test() semble être plus rapide que vous pouvez lire ici.

Différence importante entre match() et test():

match() ne fonctionne qu'avec des cordes, mais test() travaille aussi avec des entiers.

12345.match(/^([a-z0-9]{5,})$/); // ERROR
/^([a-z0-9]{5,})$/.test(12345);  // true
/^([a-z0-9]{5,})$/.test(null);   // false

// Better watch out for undefined values
/^([a-z0-9]{5,})$/.test(undefined); // true

48
2018-06-19 15:01



Utilisation /youregexp/.test(yourString) si vous voulez seulement savoir si votre chaîne correspond à l'expression rationnelle.


35
2017-07-06 21:11



Voici un exemple qui recherche certaines balises HTML de sorte qu'il est clair que /someregex/.test() renvoie un booléen:

if(/(span|h[0-6]|li|a)/i.test("h3")) alert('true');

6
2017-09-23 15:35



 let str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
 let regexp = /[a-d]/gi;
 console.log(str.match(regexp));

1
2018-03-19 04:11