>웹 프론트엔드 >JS 튜토리얼 >일상적인 게으름과 탐욕에 대한 설명

일상적인 게으름과 탐욕에 대한 설명

零下一度
零下一度원래의
2017-07-17 14:32:471174검색

이 기사는 일반적인 게으름과 탐욕에 대한 설명을 가져오는 것이 모든 사람에게 도움이 되기를 바랍니다.

exec - > 일반 캡처

캡처가 수행될 때마다 기본 일치가 먼저 수행됩니다. 일치하는 콘텐츠만 캡처할 수 있습니다.

캡처된 콘텐츠 형식

1. 캡처된 콘텐츠는 배열입니다. 배열의 첫 번째 항목은 현재 정규식으로 캡처된 콘텐츠입니다.

인덱스: 캡처된 콘텐츠가 시작되는 인덱스 위치입니다. string

  입력: 원본 문자열 캡처

  reg = /\d+/ str = 'woshi2016ni2017' res =
var res = reg.exec(str);
console.log(res) // ['2016',index:5,input:'woshi2016ni2017']

2. 일반 캡처의 특징

 1) Laziness -> exec가 실행될 때마다 첫 번째로 일치하는 내용만 캡처됩니다. 여러 캡처가 수행되는 경우 첫 번째로 일치하는 콘텐츠가 계속 캡처됩니다.

LastIndex: 정규식이 각 캡처 검색을 시작하는 문자열의 위치입니다. 기본값은 0입니다.

2) 게으름을 해결하는 방법 정규식 끝에 "g" 수식자를 추가하세요.

 수정자: g, i, m

 global(g): 전역 일치

 ignoreCase(i): 대소문자 일치 무시

multiline(m): 여러 줄 일치

 

var reg = /\d/g;
var str = 'woshi2016ni2017';
console.log(reg.lastIndex)
console.log(reg.exec(str))
 
원리: 전역 수정자 g를 추가한 후 각 캡처 후 lastIndex의 값이 최신 값이 되고 다음 캡처는 최신 위치에서 시작되므로 캡처해야 하는 모든 항목을 캡처할 수 있습니다. 캡처 모든 콘텐츠를 얻었습니다

  3), 정규 표현식으로 캡처한 모든 콘텐츠를 얻으려면 자신만의 프로그램을 작성하세요(g를 추가하는 것을 잊지 마세요)

  

var reg = /\d+/g;var str = 'aswofde2015xsewde2016awdefer2017';var ary = [];var res = reg.exec(str);while(res){
            ary.push(res[0])
            res = reg.exec(str);
        }
        console.log(ary)//[2015,2016,2017]
  
4) , Greediness 정규식 캡처는 매번 가장 긴 일치 결과를 기준으로 캡처됩니다. 예: 2는 정규 패턴을 따르고, 2015도 기본적으로 2015

  5)을 캡처합니다. 정규 패턴의 욕심 많은 성격을 해결하는 방법 -> 수량자 메타 문자 뒤에 하나를 추가하시겠습니까?

 

var reg = /\d+?/g;var str = 'aswofde2015xsewde2016awdefer2017';
        console.log(reg.exec(str));
 
?에는 정규 표현식에 많은 기능이 있습니다.

/d?/의 0-1회 발생을 나타내기 위해

뒤에 넣습니다. 나타나지 않음

캡처 취소 시

수량자의 메타 문자 뒤에 붙이는 것은 탐욕적입니다

3. 문자열의 일치 방법 -> 정규식과 일치하는 모든 문자를 입력합니다 Get

 

var reg = /\d+?/g;var str = 'aswofde2015xsewde2016awdefer2017';var ary = str.match(reg);//[2,0,1,5,2,0,1,6,2,0,1,7]
현재 상황에서는 match가 우리 exec보다 간단하지만 match에서 처리할 수 없는 몇 가지 문제가 있습니다. 그룹 캡처의 경우 match는 큰 정규식으로 일치하는 콘텐츠만 캡처할 수 있지만, 작은 정규 표현식으로 캡처한 콘텐츠를 얻을 수 없습니다

위 내용은 일상적인 게으름과 탐욕에 대한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.