이전에 정규식 시작에 대한 기사를 쓴 적이 있습니다. 정규식에 대해 비교적 잘 이해하고 있다고 생각했는데, 오늘은 제가 충분히 주의하지 않았기 때문일 수도 있습니다. 정규 표현식으로 그룹화합니다. JS 정규식을 충분히 이해하지 못한다면 여기를 클릭하여 자세히 알아볼 수 있습니다.
그룹화는 정규식에서 널리 사용됩니다. 제가 이해하는 그룹화는 한 쌍의 괄호()입니다. 각 괄호 쌍은
그룹화를 나타냅니다. >
Capturing groupingNon-capturing groupingCapturing groupingvar reg = /test(\d+)/; var str = 'new test001 test002'; console.log(str.match(reg)); //["test001", "001", index: 4, input: "new test001 test002"]
입니다. 그러나 그룹 일치는 전체 일치 결과(즉, test001)에서 하위 패턴 d+와 일치하는 문자를 찾는 것이므로 당연히 001입니다.
var reg = /test(\d)+/; var str = 'new test001 test002'; console.log(str.match(reg)); //["test001", "1", index: 4, input: "new test001 test002"]
두 번째 예를 살펴보겠습니다(d)+ in 역시 탐욕스러운 패턴입니다. 먼저 0과 일치한 다음 마지막에 1과 일치합니다.
을 캡쳐하게 됩니다. 모드를 사용하면 가능한 한 적은
var reg = /test(\d)+?/; var str = 'new test001 test002'; console.log(str.match(reg)); //["test001", "0", index: 4, input: "new test001 test002"]
var reg = /test(?:\d)+/; var str = 'new test001 test002'; console.log(str.match(reg)); //["test001", index: 4, input: "new test001 test002"]
이렇게 하면 그룹화된 일치 내용이 일치 결과에 나타나지 않습니다. 즉, 두 번째 항목 1이 누락됩니다. 이 기사에서는 (d+)와 (d+)의 차이점에 중점을 둡니다. (d)+. 이것도 제가 오늘 밟은 함정입니다. 혹시 틀린 부분이 있으면 바로잡아주세요. 자바스크립트 정규식 그룹핑에 대한 자세한 설명과 관련 글은 PHP 중국어 홈페이지를 참고해주세요!