Entender profundamente as expressões regulares do JS --- agrupamento
Eu escrevi um artigo sobre como começar com expressões regulares antes. Eu pensei que estava relativamente familiarizado com expressões regulares, mas hoje encontrei outra armadilha. Talvez tenha sido porque eu não tive cuidado o suficiente. Hoje vou me concentrar em compartilhar com você o agrupamento em expressões regulares de JavaScript. Se você não entende expressões regulares do JS o suficiente, clique aqui para saber mais.
O agrupamento é amplamente utilizado em regularidade. O agrupamento que eu entendo é um par de colchetes (). Cada par de colchetes representa um grupo, e o grupo pode ser dividido em:
• Capture agrupamento
• Agrupamento não capturado
Captura de agrupamento
A captura de agrupamento obterá os resultados do agrupamento correspondente na forma de um segundo termo e um terceiro termo em uma função como o Match Exec. Vamos dar uma olhada em um exemplo primeiro
var reg =/teste (/d+)/; var str = 'new test001 test002'; console.log (str.match (reg)); // ["test001", "001", índice: 4, entrada: "new test001 test002"]
No Código (/D+) é um grupo (algumas pessoas também o chamam de subdattern), mas todas representam o mesmo significado. No exemplo acima, o Test001 é o resultado da correspondência exata. No entanto, a correspondência do grupo é encontrar caracteres que correspondam ao sub-padrão/D+ de todo o resultado exato da correspondência (ou seja, TEST001). Aqui está obviamente 001. Mas a situação encontrada hoje é assim.
var reg =/teste (/d)+/; var str = 'new test001 test002'; console.log (str.match (reg)); // ["test001", "1", índice: 4, entrada: "new test001 test002"]
A diferença é que (/d+) é alterado para (/d)+, e todo o resultado correspondente ainda é Test001, mas o resultado da correspondência do primeiro grupo é diferente. Vamos dar uma olhada em suas diferenças
(/d+) Esta é uma situação de agrupamento. Como, por padrão, o padrão de correspondência é um padrão ganancioso, ou seja, o máximo possível corresponde a todos /D+, o resultado da partida é 001 e, em seguida, um par de colchetes é adicionado fora, o que significa um agrupamento, portanto o resultado da partida no primeiro grupo é 001. Vamos analisar ( /d)+ no segundo exemplo. Este também é um padrão ganancioso. Primeiro, ele corresponderá primeiro 0 e depois 0 e depois corresponderá ao final de 1. Ele também corresponde ao final desta partida. Parece que não há diferença entre a correspondência no primeiro exemplo, mas o agrupamento (/d) aqui significa corresponder a um único número. De acordo com o meu entendimento anterior, é 0, mas esse entendimento está errado. Como toda a partida é um padrão ganancioso, corresponder o máximo possível (/d) no grupo capturará o resultado 1 da última partida. Se for um padrão não-greedoso, ele corresponderá o mínimo possível.
var reg =/teste (/d)+?/; var str = 'new test001 test002'; console.log (str.match (reg)); // ["test001", "0", índice: 4, entrada: "new test001 test002"]
Dessa forma, o resultado correspondente (/d) é 0. Embora ainda haja resultados que possam ser correspondidos mais tarde, aqui está para corresponder o máximo possível
Agrupamento não capturado
O agrupamento não capturado significa que um par de colchetes é necessário em alguns lugares, mas eles não querem que seja um grupo de captura, ou seja, eles não querem que esse grupo seja recuperado por funções como o MacTh Exec. Geralmente, eles são precedidos por parênteses (?: Padrão) para que se torne um grupo que não seja capturado.
var reg =/teste (?:/d)+/; var str = 'new test001 test002'; console.log (str.match (reg)); // ["test001", índice: 4, entrada: "new test001 test002"]
Dessa forma, não haverá correspondência de conteúdo no resultado da partida da partida, o que significa que o segundo item está faltando.
Este artigo se concentra em explicar a diferença entre (/d+) e (/d)+, que também é o poço em que pisei hoje. Se houver algum erro, sinta -se à vontade para corrigi -los.
O artigo acima tem um profundo entendimento das expressões regulares do JS-o grupo é todo o conteúdo que compartilhei com você. Espero que possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.