Maison >interface Web >js tutoriel >Explication détaillée du regroupement dans les expressions régulières javascript
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 captureRegroupement sans captureRegroupement de capturevar reg = /test(\d+)/; var str = 'new test001 test002'; console.log(str.match(reg)); //["test001", "001", index: 4, input: "new test001 test002"](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.
var reg = /test(\d)+/; var str = 'new test001 test002'; console.log(str.match(reg)); //["test001", "1", index: 4, input: "new test001 test002"]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.
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.
var reg = /test(\d)+?/; var str = 'new test001 test002'; console.log(str.match(reg)); //["test001", "0", index: 4, input: "new test001 test002"]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"]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 !