web-dev-qa-db-fra.com

Vérifier si une chaîne correspond à une expression rationnelle dans JS

Je veux utiliser JavaScript (peut être avec jQuery) pour effectuer une validation côté client afin de vérifier si une chaîne correspond à la regex:

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

Idéalement, ce serait une expression qui renvoie Vrai ou Faux.

Je suis un débutant en JavaScript, match() fait-il ce dont j'ai besoin? Il semble vérifier si une partie d'une chaîne correspond à une expression rationnelle, pas le tout.

633
Richard

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

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

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

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

... et vous pouvez supprimer le () de votre expression rationnelle car vous n'avez pas besoin de capture.

1035
user113716

Utilisez la méthode test():

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

Vous pouvez aussi utiliser match():

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

Mais test() semble être plus rapide, comme vous pouvez le lire ici .

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

match() ne fonctionne qu'avec des chaînes, mais test() fonctionne 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
75
pmrotule

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

44
user278064

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

if(/(span|h[0-6]|li|a)/i.test("h3")) alert('true');
7
user2449231
 let str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
 let regexp = /[a-d]/gi;
 console.log(str.match(regexp));
4
Mary

Je recommanderais d'utiliser la méthode execute qui renvoie null si aucune correspondance n'existe sinon elle renvoie un objet utile.

let case1 = /^([a-z0-9]{5,})$/.exec("abc1");
console.log(case1); //null

let case2 = /^([a-z0-9]{5,})$/.exec("pass3434");
console.log(case2); // ['pass3434', 'pass3434', index:0, input:'pass3434', groups: undefined]
1
Juan Navarrete

essayer

 /^[a-z\d]{5,}$/.test(str)
console.log( /^[a-z\d]{5,}$/.test("abc123") );

console.log( /^[a-z\d]{5,}$/.test("ab12") );
1
Kamil Kiełczewski

s'il vous plaît essayer cette fleur:

/^[a-z0-9\_\.\-]{2,20}\@[a-z0-9\_\-]{2,20}\.[a-z]{2,9}$/.test('[email protected]');

vrai

0
Jaber Alshami