Maison >interface Web >js tutoriel >Apprenez la méthode de correspondance régulière des compétences javascript_javascript

Apprenez la méthode de correspondance régulière des compétences javascript_javascript

WBOY
WBOYoriginal
2016-05-16 15:13:451162parcourir

Il existe trois méthodes pour une correspondance régulière en JavaScript : match, exec et test. Ces méthodes sont toutes liées aux chaînes et aux objets RegExp, mais les scénarios d'utilisation sont différents et faciles à confondre. match est une méthode de chaîne, recevant un objet RegExp en tant que paramètre, et les autres sont des méthodes d'objet RegExp, recevant un paramètre de chaîne.

var str = 'abcdef12ab34cd56ef';
var patt = new RegExp('ab'); //主意是非全局匹配

var ret_test = patt.test(str);
console.log(ret_test);
var ret_match = str.match(patt);
console.log(ret_match);
var ret_exec = patt.exec(str);
console.log(ret_exec);

1. regExp.test(string)

Cette méthode est la plus simple. Si une chaîne correspondant à regExp est trouvée dans la chaîne, elle renverra true. Si aucune chaîne correspondante n'est trouvée, elle renverra false

.

2. regExp.exec(string)

Cette méthode est légèrement plus compliquée.

Lorsque regExp n'a pas d'indicateur global, sa valeur de retour est un tableau de chaînes : le 0ème élément du tableau est la chaîne qui vient de correspondre. Si regExp a une sous-expression, le 1er élément du tableau est le premier élément de la sous-expression regExp. , le deuxième élément est la deuxième sous-expression de regExp... et ainsi de suite. Dans l'exemple ci-dessus, si patt = new RegExp('f(\d)(\d)','g'); alors ret_exec sera un tableau de chaînes : ['f12','1'); , '2'].

Lorsque regExp a l'indicateur global (option g), la valeur de retour est un tableau composé de la première chaîne correspondante. Le 0ème élément du tableau est la chaîne qui vient de correspondre. Si regExp a une sous-expression, alors le premier élément de. le tableau est la première sous-expression de regExp, le deuxième élément du tableau est la deuxième sous-expression de regExp... et ainsi de suite. Dans le même temps, un attribut (lastIndex) de l'objet regExp est modifié et lastIndex est défini sur la position du dernier caractère de la chaîne, la position qui le suit (dans l'exemple ci-dessus, lastIndex = 2). Lorsque regExp.exec(string) est à nouveau appelé, la plage de recherche sera recherchée à partir de regExp.lastIndex. À l'heure actuelle, la valeur de retour est toujours un tableau de chaînes à un seul élément, lastIndex = 10. Nous utilisons souvent une boucle while pour parcourir les correspondances dans une chaîne :

var patt = new RegExp('ab', 'g'),
  str = 'abcdef12ab34cd56ef', ret;
while((ret = patt.exec(str))!=null) {
  console.log(ret);
}
//输出
['ab']
['ab']

Ce que renvoie la méthode exec n'est pas un tableau standard, mais doit être considéré comme un tableau de classe, car il possède également deux attributs : input est la chaîne d'entrée et index est la position du premier caractère de la chaîne actuellement correspondante. en entrée.

3. string.match(regExp)

Cette méthode est plus simple que exec car elle n'a pas besoin de prendre en compte l'attribut lastIndex de regExp. De même, deux situations sont à distinguer (matching global et matching non global)

Lorsque regExp n'a pas d'indicateur global, la valeur de retour est la même que celle d'appeler exec, renvoyant un tableau. Le 0ème élément du tableau est la chaîne qui vient de correspondre. Si regExp a une sous-expression, le 1er élément du tableau est regExp. . La première sous-expression de , le deuxième élément est la deuxième sous-expression de regExp... et ainsi de suite. L'idée est que le tableau a également deux attributs : input est la chaîne de caractères d'entrée et index est la position du premier caractère de la chaîne actuellement correspondante dans l'entrée.

Lorsque regExp a le drapeau global (option g), c'est très simple et cohérent avec notre compréhension : renvoyer un tableau composé de toutes les chaînes correspondantes. Il s'agit d'un tableau standard sans attributs d'entrée ni attributs d'index. Il n'y a aucune autre information dans le tableau de valeurs de retour, à l'exception de la chaîne correspondante.

À partir de l'analyse ci-dessus, si vous souhaitez simplement déterminer si une chaîne correspond à une certaine expression régulière, utilisez la méthode de test. Si vous souhaitez récupérer toutes les chaînes correspondantes en même temps, ou simplement trouver la première chaîne correspondante, utilisez la méthode match. Si vous souhaitez effectuer une correspondance plusieurs fois et avez besoin de connaître la position de chaque chaîne correspondante dans la chaîne d'origine, ou si l'expression régulière contient des informations de sous-expression auxquelles vous devez prêter attention, utilisez la méthode exec.

Ce qui précède est une introduction aux diverses méthodes de correspondance régulière en JavaScript. J'espère que cela sera utile à l'apprentissage de chacun.

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