RegExp 객체 인스턴스의 lastIndex 속성
2527 단어 RegExp
var re = /[A-Z]/; //
var str = "Hello,World!!!";
alert(re.lastIndex);//0
var arr = re.exec(str); //exec , re lastIndex
alert(re.lastIndex);//1
arr = re.exec(str);
alert(re.lastIndex);//1
arr = re.exec(str);
alert(re.lastIndex);//1
re = /[A-Z]/g; // , 。
alert(re.lastIndex);//0
arr = re.exec(str);
alert(re.lastIndex);//1
arr = re.exec(str);
alert(re.lastIndex);//7
arr = re.exec(str);
alert(re.lastIndex);//0
arr = re.exec(str);
alert(re.lastIndex);//1
일치에 실패하면 (뒤에 일치하지 않음), exec를 실행하면 lastIndex를 0 (시작 위치) 으로 설정합니다.
var re = /\d/; //var re = /\d/g;
var str = "Hello,World!!!";
alert(re.lastIndex);//0
var arr = re.exec(str);
alert(re.lastIndex);//0
lastIndex 값이 설정된 경우
(1) 전문 일치 g를 지정하면 exec를 실행하는 등 방법은 지정한 lastIndex 위치부터 일치하고, 일치하지 않으면 lastIndex=0, exec 등의 방법을 실행할 때 0부터 일치하며, 일치하지 않으면 lastIndex=0, 일치하지 않으면 문자열이 정확한 일치가 없고, 일치하지 않으면 lastIndex는 일치하는 문자의 마지막 색인에 1을 추가하는 것과 같다.만약 exec 등의 방법을 계속 집행한다면 그것은 순환하는 과정이다.
(2) 전문 매칭 g가 지정되지 않으면 exec 등 방법을 실행할 때마다 문자열의 시작 위치(즉lastIndex=0의 위치)에서 매칭을 시작하고 매칭에 실패하면lastIndex=0, 매칭에 성공하면lastIndex는 매칭 문자의 마지막 문자 인덱스에 1을 추가합니다.
var re = /[A-Z]/;
var str = "Hello,World!!!";
alert(re.lastIndex);//0
re.lastIndex=2;
alert(re.lastIndex);//2
var arr = re.exec(str);
alert(re.lastIndex);//1
arr = re.exec(str);
alert(re.lastIndex);//1
arr = re.exec(str);
alert(re.lastIndex);//1
var re = /[A-Z]/g; //
var str = "Hello,World!!!";
alert(re.lastIndex);//0
re.lastIndex=2;
alert(re.lastIndex);//2
var arr = re.exec(str);
alert(re.lastIndex);//7
arr = re.exec(str);
alert(re.lastIndex);//0
arr = re.exec(str);
alert(re.lastIndex);//1
arr = re.exec(str);
alert(re.lastIndex);//7
요약: exec 등 방법을 실행할 때 실패한 lastIndex=0과 일치하면전체 텍스트 일치 표지 g가 없으면 몇 번을 일치해도 lastIndex는 같고 전체 텍스트 일치 표지 g가 있으면 lastIndex는 하위 문자열의 마지막 문자와 일치하며 전체 문자열의 색인에 1을 더하고 순서대로 진행하며 0이 일치하지 않은 것을 알고 다음 순환에 들어갑니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
CAtlRegExp 일치 이메일 주소Lua 안은 비교적 강해서 줄곧 여러 개와 일치한다. CAtl Regexp는 한 번에 한 개만 일치하는 것 같습니다. 여러 개는 지원될지 안 될지 모릅니다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.