Qu'est-ce que RegExp ?
Une expression régulière décrit un objet de modèle de caractère.
Lorsque vous récupérez du texte, vous pouvez utiliser un modèle pour décrire ce que vous souhaitez récupérer. RegExp est ce modèle.
Un motif simple peut être un seul caractère.
Les modèles plus complexes incluent plus de caractères et peuvent être utilisés pour l'analyse, la vérification du format, le remplacement, etc.
Vous pouvez spécifier la position de recherche dans la chaîne, le type de caractères à rechercher, etc.
JavaScript fournit un objet RegExp pour effectuer les opérations et fonctions liées aux expressions régulières Chaque modèle d'expression régulière correspond à une instance RegExp
<🎜. >
Utilisez le constructeur explicite de RegExp, la syntaxe est :
new RegExp("pattern"[,"flags"]). Utilisez le constructeur implicite de RegExp, au format texte brut :
/pattern/[flags]. La partie
flags définit les informations de drapeau de l'expression régulière, qui sont facultatives. Si la partie flags est définie, dans la première manière, elle existe sous la forme d'une chaîne ; dans la seconde manière, elle se présente sous la forme d'un texte immédiatement après le dernier caractère "/". les drapeaux peuvent être une combinaison des caractères de drapeau suivants.
g est un drapeau mondial. Si cet indicateur est défini, une opération de recherche et de remplacement sur un texte affectera toutes les parties correspondantes du texte. Si cet indicateur n'est pas défini, seule la correspondance la plus ancienne est recherchée et remplacée.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> <script type="text/javascript"> var myString="这是第一个正则表达式的例子"; var myregex = new RegExp("一个"); // 创建正则表达式 if (myregex.test(myString)){ document.write("找到了指定的模式!"); } else{ document.write("未找到指定的模式。"); } </script> </head> <body> </body> </html>Modificateur RegExp
g est un drapeau mondial. Si cet indicateur est défini, une opération de recherche et de remplacement sur un texte affectera toutes les parties correspondantes du texte. Si cet indicateur n'est pas défini, seule la correspondance la plus ancienne est recherchée et remplacée.
i est un indicateur ignorant la casse. Si cet indicateur est défini, la casse sera ignorée lors des comparaisons de correspondance.
m est un drapeau multiligne. Si cet indicateur n'est pas défini, le métacaractère "^" ne correspondra qu'au début de la chaîne entière recherchée et le métacaractère "$" ne correspondra qu'à la fin de la chaîne recherchée. Si cet indicateur est défini, "^" peut également correspondre à la position après "n" ou "r" dans la chaîne recherchée (c'est-à-dire le début de la ligne suivante), et "$" peut également correspondre à la chaîne recherchée. Correspond à la position après "n" ou "r" (c'est-à-dire la fin de la ligne suivante).
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <script> var str="Is this all there is?"; var patt1=/is/gi; document.write(str.match(patt1)); </script> </body> </html>
Propriétés de l'objet RegExp
Les propriétés de l'objet RegExp sont divisées en propriétés statiques et en instance propriétés.
1 Attribut statique
(1) attribut d'index. Il s'agit de la position de départ du premier contenu correspondant du modèle d'expression actuel, en comptant à partir de 0. Sa valeur initiale est -1 et l'attribut index changera à chaque fois qu'une correspondance sera réussie.
(2) attribut d'entrée. Renvoie la chaîne actuelle sur laquelle l'action est effectuée, qui peut être abrégée en $_, et la valeur initiale est la chaîne vide "".
(3)attribut lastIndex. Il s'agit de la position suivante du dernier caractère du contenu auquel le modèle d'expression actuel correspond en premier. Le comptage commence à 0. Il est souvent utilisé comme position de départ lors de la poursuite de la recherche. La valeur initiale est -1, ce qui signifie que la recherche est effectuée. commence à partir de la position de départ. Chaque fois qu'il réussit. Lors de la correspondance, la valeur de l'attribut lastIndex changera en conséquence.
(4)attribut lastMatch. Est la dernière chaîne correspondante du modèle d'expression actuel, qui peut être abrégé en $&. Sa valeur initiale est la chaîne vide "". La valeur de l'attribut lastMatch change à chaque correspondance réussie.
(5)attribut lastParen. S'il y a des sous-correspondances incluses dans le modèle d'expression, il s'agit de la sous-chaîne correspondant à la dernière sous-correspondance dans le modèle d'expression actuel, qui peut être abrégée en $+. Sa valeur initiale est la chaîne vide "". La valeur de l'attribut lastParen change à chaque correspondance réussie.
(6) attribut leftContext. Il s'agit de tout ce qui se trouve à gauche de la dernière chaîne correspondante dans le modèle d'expression actuel, qui peut être abrégé en $` (où "'" est le guillemet simple sous "Esc" sur le clavier). La valeur initiale est la chaîne vide "". Chaque fois qu’une correspondance est réussie, la valeur de sa propriété change.
(7) attribut rightContext. Il s'agit de tout ce qui se trouve à droite de la dernière chaîne correspondante dans le modèle d'expression actuel, qui peut être abrégé en $'. La valeur initiale est la chaîne vide "". Chaque fois qu’une correspondance est réussie, la valeur de sa propriété change.
(8) Attributs de 1 $ à 9 $. Ces propriétés sont en lecture seule. S'il y a des sous-correspondances incluses dans le modèle d'expression, les valeurs d'attribut $1...$9 sont respectivement le contenu capturé par la première à la neuvième sous-correspondances. S'il y a plus de 9 sous-correspondances, les attributs $1...$9 correspondent respectivement aux 9 dernières sous-correspondances. Dans un modèle d'expression, vous pouvez spécifier n'importe quel nombre de sous-correspondances entre parenthèses, mais l'objet RegExp ne peut stocker que les résultats des neuf dernières sous-correspondances. Dans le tableau de résultats renvoyé par certaines méthodes de l'objet instance RegExp, tous les résultats de sous-correspondance entre parenthèses peuvent être obtenus.
2 Attributs d'instance
(1) attribut global. Renvoie l'état de l'indicateur global (g) spécifié lors de la création de l'instance d'objet RegExp. Si l'indicateur g est défini lors de la création d'une instance d'objet RegExp, cette propriété renvoie True, sinon elle renvoie False. La valeur par défaut est False.
(2)attribut ignoreCase. Renvoie l'état de l'indicateur ignoreCase (i) spécifié lors de la création de l'instance d'objet RegExp. Si l'indicateur i est défini lors de la création d'une instance d'objet RegExp, cette propriété renvoie True, sinon elle renvoie False. La valeur par défaut est False.
(3) attribut multiLine. Renvoie l'état de l'indicateur multiLine (m) spécifié lors de la création de l'instance d'objet RegExp. Si l'indicateur m est défini lors de la création d'une instance d'objet RegExp, cette propriété renvoie True, sinon elle renvoie False. La valeur par défaut est False.
(4) attribut source. Renvoie la chaîne de texte d'expression spécifiée lors de la création de l'instance d'objet RegExp.
Méthodes de l'objet RegExp
1 méthode de test
Le format de syntaxe est test(str). Cette méthode vérifie si le modèle d'expression spécifié lors de la création d'une instance d'objet RegExp existe dans une chaîne et renvoie True s'il existe, sinon elle renvoie False. Si une correspondance est trouvée, les propriétés statiques pertinentes dans l'objet RegExp sont mises à jour pour refléter la correspondance.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <script> var str = 'php'; var patt1 = new RegExp('\w', 'g'); // 有转义作为正则表达式处理 var patt2 = new RegExp('\w', 'g'); // 无转义作为字符串处理 var patt3 =/\w+/g; // 与 patt1 效果相同 document.write(patt1.test(str)) //输出 true document.write("<br>") document.write(patt2.test(str)) //输出 false document.write("<br>") document.write(patt3.test(str)) //输出 true </script> </body> </html>
2 méthode exec
Le format de syntaxe est exec(str). Cette méthode recherche une chaîne à l'aide du modèle d'expression spécifié lors de la création de l'instance d'objet RegExp et renvoie un tableau contenant les résultats de la recherche.
Si l'indicateur global (g) est défini pour une expression régulière, vous pouvez effectuer une recherche continue dans la chaîne en appelant les méthodes exec et test plusieurs fois, en démarrant à chaque fois la recherche de caractères à partir de la position spécifiée par lastIndex valeur d'attribut de la chaîne d'objet RegExp.
Si l'indicateur global (g) n'est pas défini, les méthodes exec et test ignorent la valeur de l'attribut lastIndex de l'objet RegExp et commencent la recherche à partir du début de la chaîne.
Si la méthode exec ne trouve pas de correspondance, la valeur de retour est nulle ; si une correspondance est trouvée, un tableau est renvoyé et les propriétés statiques pertinentes dans l'objet RegExp sont mises à jour pour refléter la correspondance. L'élément 0 du tableau renvoyé contient le résultat complet de la correspondance, tandis que les éléments 1 à n sont les résultats de chaque sous-correspondance définie dans le modèle d'expression.
Le tableau renvoyé par la méthode exec a trois attributs, à savoir input, index et lastIndex.
L'attribut d'entrée est la chaîne entière recherchée.
L'attribut index fait référence à la position de la correspondance dans toute la chaîne recherchée.
L'attribut lastIndex fait référence à la position du caractère à côté du dernier caractère de la sous-chaîne correspondante.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> <script type="text/javascript"> var myString="aaa 111 bbb 222 ccc 1111 222ddd"; var regex = /111/; //创建正则表达式对象 var array=regex.exec(myString); if (array){ var str="找到了匹配子串!"+"\n返回数组的值为:"+array+"\n数组元素个数:" +array.length+"\n被搜索的字符串为:"+array.input +"\n匹配子串的开始位置为:"+array.index +"\n匹配子串后面第一个字符的位置为:"+regex.lastIndex; alert(str); } else{ alert("未找到匹配子串!!"); } </script> </head> <body> </body> </html>