Maison interface Web js tutoriel Explication détaillée du regroupement dans les expressions régulières javascript

Explication détaillée du regroupement dans les expressions régulières javascript

Jan 20, 2017 pm 01:47 PM

J'ai déjà écrit un article sur la prise en main des expressions régulières. Je pensais avoir une relativement bonne compréhension des expressions régulières, mais aujourd'hui, j'ai rencontré un autre piège. C'est peut-être parce que je ne suis pas assez prudent. Aujourd'hui, je vais me concentrer sur le partage. javascript avec vous. Regroupement en expressions régulières. Si vous ne comprenez pas suffisamment les expressions régulières JS, vous pouvez cliquer ici pour en savoir plus. Le regroupement

est largement utilisé dans les expressions régulières. Le regroupement que je comprends est une paire de parenthèses (). Chaque paire de parenthèses représente un regroupement

peut être divisé en :

Regroupement de capture

Regroupement sans capture

Regroupement de capture


Le regroupement de capture sera utilisé dans des choses comme match exec Dans la fonction, le groupe correspondant les résultats sont obtenus sous la forme du deuxième item et du troisième item. Regardons d'abord un exemple

var reg = /test(\d+)/;
 var str = 'new test001 test002';
 console.log(str.match(reg));
//["test001", "001", index: 4, input: "new test001 test002"]
Copier après la connexion

(d) dans le code est un groupe (certaines personnes l'appellent aussi un sous-modèle), mais tout cela signifie la même signification, ce qui précède Dans l'exemple, test001 est le résultat de la correspondance exacte,

Cependant, la correspondance groupée consiste à trouver les caractères correspondant au sous-modèle d à partir de l'ensemble du résultat de la correspondance exacte (c'est-à-dire test001), qui est évidemment 001.

Mais la situation que j'ai rencontrée aujourd'hui est la suivante

var reg = /test(\d)+/;
 var str = 'new test001 test002';
 console.log(str.match(reg));
//["test001", "1", index: 4, input: "new test001 test002"]
Copier après la connexion

La différence est que (d) a été remplacé par (d), le résultat complet de la correspondance est toujours test001 , mais le résultat de la correspondance du premier groupe est différent.


Analysons leurs différences lentement

(d) Il s'agit d'une situation de regroupement, car par défaut le mode de correspondance est le mode gourmand, ce qui signifie autant que possible Pour faire correspondre

tous les d, le résultat correspondant est 001, puis une paire de parenthèses est ajoutée à l'extérieur, qui est un groupe, donc le résultat correspondant dans le premier groupe est 001.

Regardons le deuxième exemple (d) dans (d) est aussi un motif gourmand. Il correspondra d'abord à 0, puis à 0, puis à 1 à la fin. Il correspondra également jusqu'à la fin du match


ressemble au premier. un. Il n'y a aucune différence dans la correspondance dans l'exemple, mais le regroupement (d) signifie ici faire correspondre un seul nombre


D'après ma compréhension précédente, il correspondra au premier résultat correspondant, qui. est 0. Mais cette compréhension est fausse. Étant donné que l'ensemble de la correspondance est un mode gourmand, faire correspondre autant de (d) que possible dans le groupe


capturera le dernier résultat correspondant 1

s'il s'agit d'un mode non gourmand. mode, alors j'essaierai de faire correspondre

var reg = /test(\d)+?/;
 var str = 'new test001 test002';
 console.log(str.match(reg));
 
//["test001", "0", index: 4, input: "new test001 test002"]
Copier après la connexion

le moins possible De cette façon, le résultat correspondant de (d) est 0. Bien qu'il y ait encore des résultats correspondants plus tard, ici. sont aussi peu nombreux que possible. Match

Regroupement sans capture

var reg = /test(?:\d)+/;
 var str = 'new test001 test002';
 console.log(str.match(reg));
//["test001", index: 4, input: "new test001 test002"]
Copier après la connexion

Le regroupement sans capture signifie qu'une paire de parenthèses est nécessaire à certains endroits, mais vous je ne veux pas qu'il devienne une capture Le regroupement signifie que vous ne voulez pas que ce groupe soit obtenu par des fonctions comme macth exec

ajoutez généralement ?: devant les parenthèses, c'est-à-dire (?:motif ), qui devient un regroupement sans capture,

De cette façon, le contenu correspondant groupé n'apparaîtra pas dans le résultat du match, c'est-à-dire que le deuxième élément 1 est manquant

Cet article. se concentre sur (d) et (d) La différence est aussi le piège sur lequel j'ai marché aujourd'hui. S'il y a des erreurs, veuillez me corriger.

Pour des explications plus détaillées sur le regroupement dans les expressions régulières javascript et les articles connexes, veuillez faire attention au site Web PHP chinois !

Déclaration de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment créer et publier mes propres bibliothèques JavaScript? Comment créer et publier mes propres bibliothèques JavaScript? Mar 18, 2025 pm 03:12 PM

L'article discute de la création, de la publication et du maintien des bibliothèques JavaScript, en se concentrant sur la planification, le développement, les tests, la documentation et les stratégies de promotion.

Comment optimiser le code JavaScript pour les performances dans le navigateur? Comment optimiser le code JavaScript pour les performances dans le navigateur? Mar 18, 2025 pm 03:14 PM

L'article traite des stratégies pour optimiser les performances JavaScript dans les navigateurs, en nous concentrant sur la réduction du temps d'exécution et la minimisation de l'impact sur la vitesse de chargement de la page.

Que dois-je faire si je rencontre l'impression de code brouillé pour les reçus en papier thermique frontal? Que dois-je faire si je rencontre l'impression de code brouillé pour les reçus en papier thermique frontal? Apr 04, 2025 pm 02:42 PM

Des questions et des solutions fréquemment posées pour l'impression de billets thermiques frontaux pour le développement frontal, l'impression de billets est une exigence commune. Cependant, de nombreux développeurs mettent en œuvre ...

Comment déboguer efficacement le code JavaScript à l'aide d'outils de développeur de navigateur? Comment déboguer efficacement le code JavaScript à l'aide d'outils de développeur de navigateur? Mar 18, 2025 pm 03:16 PM

L'article traite du débogage efficace de JavaScript à l'aide d'outils de développeur de navigateur, de se concentrer sur la définition des points d'arrêt, de l'utilisation de la console et d'analyser les performances.

Comment utiliser efficacement le cadre de collections de Java? Comment utiliser efficacement le cadre de collections de Java? Mar 13, 2025 pm 12:28 PM

Cet article explore une utilisation efficace du cadre de collections de Java. Il met l'accent sur le choix des collections appropriées (liste, set, map, file d'attente) en fonction de la structure des données, des besoins en performances et de la sécurité des threads. Optimisation de l'utilisation de la collection grâce à

Comment utiliser les cartes source pour déboguer le code JavaScript minifié? Comment utiliser les cartes source pour déboguer le code JavaScript minifié? Mar 18, 2025 pm 03:17 PM

L'article explique comment utiliser les cartes source pour déboguer JavaScript minifiée en le mappant au code d'origine. Il discute de l'activation des cartes source, de la définition de points d'arrêt et de l'utilisation d'outils comme Chrome Devtools et WebPack.

Début avec Chart.js: tarte, beignet et graphiques à bulles Début avec Chart.js: tarte, beignet et graphiques à bulles Mar 15, 2025 am 09:19 AM

Ce tutoriel expliquera comment créer des graphiques à tarte, anneaux et bulles à l'aide de chart.js. Auparavant, nous avons appris quatre types de graphiques de graphique. Créer des graphiques à tarte et à anneaux Les graphiques à tarte et les graphiques d'anneaux sont idéaux pour montrer les proportions d'un tout divisé en différentes parties. Par exemple, un graphique à secteurs peut être utilisé pour montrer le pourcentage de lions mâles, de lions féminins et de jeunes lions dans un safari, ou le pourcentage de votes que différents candidats reçoivent lors des élections. Les graphiques à tarte ne conviennent que pour comparer des paramètres ou des ensembles de données uniques. Il convient de noter que le graphique à tarte ne peut pas dessiner des entités avec une valeur nulle car l'angle du ventilateur dans le graphique à tarte dépend de la taille numérique du point de données. Cela signifie toute entité avec une proportion nulle

Qui est payé plus de python ou de javascript? Qui est payé plus de python ou de javascript? Apr 04, 2025 am 12:09 AM

Il n'y a pas de salaire absolu pour les développeurs Python et JavaScript, selon les compétences et les besoins de l'industrie. 1. Python peut être davantage payé en science des données et en apprentissage automatique. 2. JavaScript a une grande demande dans le développement frontal et complet, et son salaire est également considérable. 3. Les facteurs d'influence comprennent l'expérience, la localisation géographique, la taille de l'entreprise et les compétences spécifiques.

See all articles