Sémantique et utilisation des objets RegExp :
vérifiez les correspondances de chaînes, obtenez une partie du contenu de la chaîne et construisez une nouvelle chaîne basée sur la chaîne d'origine (y compris l'ajout, la suppression et la modification)
Il existe deux manières principales de construire un objet RegExp :
utiliser un littéral, tel que /w/g
Utilisez un constructeur, tel que new RegExp(/w/)
Il y a plusieurs points à noter lors de la construction d'objets RegExp :
le littéral est souvent utilisé pour construire des objets RegExp statiques qui ne sont pas générés par l'exécution.
Les indicateurs peuvent être ajoutés directement après le littéral pour limiter les résultats d'exécution des chaînes correspondantes. Les indicateurs couramment utilisés incluent g et i, qui sont utilisés pour représenter respectivement la correspondance globale (globale) et la correspondance insensible à la casse.
Le premier paramètre du constructeur RegExp fournit le modèle de l'objet. Si pattern est un littéral RegExp, le deuxième paramètre (c'est-à-dire la spécification de l'indicateur) ne peut pas être fourni. Si pattern est une chaîne, vous pouvez utiliser le deuxième paramètre
Le constructeur RegExp est souvent utilisé pour créer des objets RegExp dynamiques générés par l'exécution.
Lorsque le modèle de RegExp est une chaîne, tous les "" littéraux doivent être écrits sous la forme "\", car "" doit être échappé dans la chaîne. Les deux méthodes ci-dessus construisent un objet javascript, donc /w/ ==. /w/Return false
Fonctions liées à l'objet RegExp :
Pour vérifier la correspondance d'une chaîne, vous pouvez utiliser la méthode regExp.test(string), qui vérifie si la chaîne correspond au modèle fourni par regExp. Vous pouvez également utiliser la méthode string.search(regExp), qui renverra -1 si les deux ne correspondent pas.
Pour obtenir une partie de la chaîne, vous pouvez utiliser la méthode regExp.exec(string) ou la méthode string.match(regExp). Pour créer une nouvelle chaîne sur la chaîne d'origine, utilisez généralement string.replace(searchValue, méthode replaceValue)
La sémantique du modèle est fournie dans l'objet RegExp :
RegExp peut définir plusieurs Alternatives séparées par "|". Cette opération a la priorité la plus basse, donc si "|" existe, elle divise d'abord la RegExp en plusieurs parties. Composés de termes, les termes sont divisés en assertion (utilisée pour la qualification de position), atome (unité de correspondance) et atome avec quantificateur (modificateur).
L'assertion est divisée en "^" qui est utilisé pour correspondre au début de la chaîne. Dans multiInput (c'est-à-dire lorsque l'indicateur contient m), elle peut également correspondre au début d'une ligne. "$" est utilisé pour correspondre au début de la chaîne. fin de la chaîne. Dans multiInput (c'est-à-dire lorsque l'indicateur contient m), il peut également correspondre à la fin d'une ligne. "b" est utilisé pour correspondre à un intervalle w et W. n'importe quel contenu dans la chaîne, mais n'est utilisé que pour déterminer la correspondance d'une position.
La situation de l'atome est plus compliquée. Examinons d'abord le quantificateur de l'atome, qui peut inclure * + ? {n} {m,} {m,n}, où * signifie que l'atome peut avoir 0 ou plusieurs répétitions, + signifie 1 ou plus Pour les répétitions ci-dessus, ? signifie 0 ou 1 fois, {n} signifie exactement n répétitions, {m,} signifie m répétitions ou plus, {m,n} signifie que le nombre de répétitions est compris entre m et n (y compris m et n ), le Quantificateur ci-dessus peut également être suivi d'un ? pour démarrer le mode non gourmand. J'expliquerai la signification de ce mode plus tard.
Atom contient patternCharacter (caractères ordinaires, c'est-à-dire des caractères sans sémantique particulière dans le motif, qui correspondront littéralement)
"." correspond à tous les caractères autres que des fins de ligne.
AtomEscape contient le chiffre 1 (utilisé pour faire référence à la correspondance réussie dans les parenthèses précédentes). Références à certains caractères n f r t v xNN uXXXX cX, etc. Certains caractères ayant une signification particulière, tels que d D s S w W
CharacterClass contient deux formes : [...] et [^...]. Il peut contenir de nombreux caractères, tels que -, n et d'autres références de caractères, b, d et d'autres caractères à signification spéciale. Notez que s'il y a des caractères autour de "-", la sémantique passe d'un certain caractère à un certain caractère. S'il n'y a aucun caractère à gauche ou à droite de "-", alors "-" représente uniquement le caractère tiret.
(groupe), si vous effectuez un regroupement dans le mode ci-dessus, vous pouvez utiliser Quantifier pour le modifier après le groupe.
(?:group), utilisé uniquement en tant que groupe, et le contenu correspondant au groupe ne sera pas enregistré et ne sera pas inclus dans 1..n
(?=groupe), nécessite une correspondance mais n'inclut pas le contenu correspondant au groupe dans la chaîne correspondante renvoyée
(?!group), ne nécessite aucune correspondance et n'inclura pas le contenu correspondant au groupe dans la chaîne correspondante renvoyée. Je veux maintenant parler des deux modes de fonctionnement les plus importants de RegExp :
La correspondance alternative est toujours de gauche à droite. la première correspondance n'essaiera plus les correspondances suivantes, telles que
/ab|abc/.exec("abc") La chaîne ci-dessus "abc" ne correspond qu'à ab dans le modèle et ne correspondra pas à abc
, c'est toujours normal. Si ? n'est pas ajouté après Quantifier, le mode gourmand sera utilisé. Après l'ajout de ?, le mode non gourmand sera utilisé. Par exemple, lors de
la correspondance avec /w+bc/.exec("abcbcbc"), w+ le sera. faites toujours correspondre autant de correspondances que possible en premier (c'est-à-dire en mode gourmand), donc il correspondra à "abcbcbc". S'il est modifié en
/w+?bc/.exec("abcbcbc"), alors il correspondra au moins possible ( c'est-à-dire le mode non gourmand), il ne correspondra donc qu'à "abc".
Pour les exigences générales d'analyse de chaîne, vous pouvez généralement utiliser la méthode exec ou match pour analyser. Si la chaîne est volumineuse, vous devez souvent utiliser une structure de boucle pour l'analyse, qui est très puissante lorsqu'elle est combinée avec while et d'autres instructions.
Lorsque vous souhaitez convertir une chaîne existante en une autre chaîne en la modifiant, vous utilisez généralement toujours la méthode replace. Cette méthode est à mon avis la méthode la plus importante de RegExp. Son polymorphisme lui permet de répondre à presque toutes les formes. besoins de modification des chaînes.