Maison  >  Article  >  interface Web  >  Comparaison des différences entre test(), exec() et match() des expressions régulières js (avec exemples)

Comparaison des différences entre test(), exec() et match() des expressions régulières js (avec exemples)

不言
不言original
2018-08-20 15:11:483507parcourir

Le contenu de cet article concerne les différences et les comparaisons entre test(), exec() et match() des expressions régulières js (avec des exemples). Il a une certaine valeur de référence et des amis dans le besoin. Vous pouvez vous y référer, J'espère que cela vous sera utile.

1. Les expressions régulières sont généralement utilisées dans

deux méthodes de chaîne : search(), replace()

deux méthodes d'expression régulière : test(), exec()

Méthode search() : prend une expression régulière comme paramètre et renvoie la position de départ de la première sous-chaîne correspondante, s'il n'y a pas de sous-chaîne correspondante, elle renvoie -1. Méthode

replace() : effectue des opérations de récupération et de remplacement. Son premier paramètre est une expression régulière et le deuxième paramètre est la chaîne ou la fermeture à remplacer. Méthode

test() : est utilisée pour détecter si une chaîne correspond à un certain modèle. Si la chaîne contient du texte correspondant, elle renvoie vrai, sinon elle renvoie faux. Méthode

exec() : est utilisée pour récupérer les correspondances d'expressions régulières dans une chaîne. Cette fonction renvoie un tableau contenant les résultats correspondants. Si aucune correspondance n'est trouvée, la valeur de retour est nulle.

Méthode match() : Le seul paramètre est l'expression régulière. Son comportement dépend du drapeau de cette expression régulière. Si l'expression régulière contient le drapeau g, sa valeur de retour est. un tableau contenant les correspondances qui apparaissent dans la chaîne. Si l'expression régulière ne contient pas l'indicateur g, elle renvoie également un tableau dont le premier élément est la chaîne correspondante et les éléments restants sont les groupes individuels de l'expression régulière. Remarque : En mode de recherche globale, match() ne fournit pas d'informations sur le texte correspondant à la sous-expression, ni ne déclare la position de chaque sous-chaîne correspondante. Si vous avez besoin de ces informations récupérées globalement, vous pouvez utiliser RegExp.exec().

Méthode split() : peut prendre en charge la correspondance de modèles.

2. L'objet RegExp définit deux méthodes pour la correspondance de modèles, ce sont exec() et test()

1, la méthode exec() de RegExp et la méthode match() de String. . Il effectue une correspondance d'expression régulière sur une chaîne spécifiée, si aucune correspondance n'est trouvée, il renvoie null, sinon il renvoie un tableau. Le premier élément de ce tableau contient l'expression régulière et tous les éléments restants contiennent la correspondance. groupes. De plus, l'attribut index de l'objet expression régulière contient également la position de la chaîne où la correspondance s'est produite, et l'attribut input fait référence à la chaîne récupérée.
Si l'expression régulière a l'indicateur g, elle définira la propriété lastIndex de l'objet à la position qui suit immédiatement la chaîne correspondante et lancera la récupération. Si exec() ne trouve aucune correspondance, elle réinitialisera la propriété lastIndex à. 0. Ce comportement spécial vous permet d'appeler exec() à plusieurs reprises pour parcourir toutes les correspondances d'expressions régulières dans une chaîne.

2. Le paramètre test() de l'objet RegExp est une chaîne Si cette chaîne contient une correspondance de l'expression régulière, elle renvoie vrai, sinon elle renvoie faux
Quand une expression régulière avec le g flag Lorsqu'une expression appelle la méthode test(), elle se comporte de la même manière que exec(), c'est-à-dire qu'elle récupère la chaîne spécifique commençant à lastIndex, et si elle trouve une correspondance, elle définit lastIndex à la position du caractère qui suit immédiatement qui correspondent. , afin que nous puissions utiliser la méthode test() pour parcourir la chaîne.

test

test renvoie un booléen pour savoir si le modèle existe dans la chaîne correspondante.

var str = "1a1b1c";
var reg = new RegExp("1.", "");
alert(reg.test(str)); // true

exec

exec trouve et renvoie le résultat correspondant actuel sous forme de tableau.

var str = "1a1b1c";
var reg = new RegExp("1.", "");
var arr = reg.exec(str);

Si le motif n'existe pas, arr est nul, sinon arr est toujours un tableau de longueur 1 dont la valeur est la correspondance actuelle. arr a également trois attributs : index est la position de la correspondance actuelle ; lastIndex est la position de fin de la correspondance actuelle (index + longueur de la correspondance actuelle). Dans l'exemple ci-dessus, input est str.

La méthode exec est affectée par le paramètre g. Si g est spécifié, la prochaine fois que exec sera appelé, la recherche commencera à partir du dernier lastIndex correspondant.

var str = "1a1b1c";
var reg = new RegExp("1.", "");
alert(reg.exec(str)[0]);
alert(reg.exec(str)[0]);

Les deux sorties ci-dessus sont 1a. Regardez maintenant le paramètre g spécifié :

var str = "1a1b1c";
var reg = new RegExp("1.", "g");
alert(reg.exec(str)[0]);
alert(reg.exec(str)[0]);

Le premier ci-dessus génère 1a et le second génère 1b.

match

hjvar str = "1a1b1c";
var reg = new RegExp("1.", "");
alert(str.match(reg));

la méthode est un peu comme exec, mais : exec est une méthode d'objet RegExp ; math est une méthode d'objet String. Il existe une autre différence entre les deux, qui réside dans l’interprétation du paramètre e g.

Si le paramètre g est spécifié, match renvoie tous les résultats en même temps.

var str = "1a1b1c";
var reg = new RegExp("1.", "g");
alert(str.match(reg));
//alert(str.match(reg)); // 此句同上句的结果是一样的

Le résultat est un tableau avec trois éléments : 1a, 1b, 1c. La méthode

compile compile l'expression régulière dans un format interne, s'exécutant ainsi plus rapidement.

var reg = new RegExp();
reg.compile("[a-z]{5}", "g");
alert(reg.test("cftea"));

Lorsque vous utilisez plusieurs fois la même expression régulière (comme dans une boucle), l'effet est significatif.

Recommandations associées :

Expressions régulières de la série JS Basic

Comment comprendre correctement le retour en arrière des expressions régulières en js

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn