.match () 함수는 str.match(regexp)
다음 작업을 수행합니다 :
- 이 경우 입니다 일치가 반환합니다 :
g
플래그 가 정규 표현식에서 사용되는 경우 : 모든 하위 문자열을 반환합니다 (캡처 그룹 무시).
- 경우
g
플래그가되어 있지 정규 표현식에 사용 : 그것은 같은를 반환합니다regexp.exec(str)
- 일치하는 항목 이 없으면 다음을 반환합니다.
플래그를 사용하는 .match ()의 예 g
:
var str = "qqqABApppabacccaba";
var e1, e2, e3, e4, e5;
e1 = str.match(/nop/g); //null
e2 = str.match(/no(p)/g); //null
e3 = str.match(/aba/g); //["aba", "aba"]
e4 = str.match(/aba/gi); //["ABA", "aba", "aba"]
e5 = str.match(/(ab)a/g); //["aba", "aba"] ignoring capture groups as it is using the g flag
그리고 플래그가 없는 .match ()g
는 .exec ()와 같습니다.
e1=JSON.stringify(str.match(/nop/))===JSON.stringify(/nop/.exec(str)); //true
//e2 ... e4 //true
e5=JSON.stringify(str.match(/(ab)a/))===JSON.stringify(/(ab)a/.exec(str)); //true
.exec () 함수는 regexp.exec(str)
다음 작업을 수행합니다 :
- 이 경우 입니다 일치가 반환합니다 :
g
플래그 가 정규 표현식에서 사용되는 경우 : 다음 일치 항목을 ( 호출 될 때마다) 반환 합니다. 중요 : regexp 객체가 변수에 저장되지 않은 경우 다음 일치 항목으로 진행되지 않습니다 (동일한 객체 여야 함).[N_MatchedStr, N_Captured1, N_Captured2, ...]
N
g
플래그가 정규 표현식에서 사용 되지 않는 경우 : 플래그가 g
있고 처음으로 한 번만 호출 된 것처럼 동일한 결과를 반환합니다 .
- 일치하는 항목 이 없으면 다음을 반환합니다.
.exec ()의 예 (저장된 regexp + g
플래그 사용 = 각 호출에 따라 변경됨) :
var str = "qqqABApppabacccaba";
var myexec, rgxp = /(ab)a/gi;
myexec = rgxp.exec(str);
console.log(myexec); //["ABA", "AB"]
myexec = rgxp.exec(str);
console.log(myexec); //["aba", "ab"]
myexec = rgxp.exec(str);
console.log(myexec); //["aba", "ab"]
myexec = rgxp.exec(str);
console.log(myexec); //null
//But in this case you should use a loop:
var mtch, myRe = /(ab)a/gi;
while(mtch = myRe.exec(str)){ //infinite looping with direct regexps: /(ab)a/gi.exec()
console.log("elm: "+mtch[0]+" all: "+mtch+" indx: "+myRe.lastIndex);
//1st iteration = elm: "ABA" all: ["ABA", "AB"] indx: 6
//2nd iteration = elm: "aba" all: ["aba", "ab"] indx: 12
//3rd iteration = elm: "aba" all: ["aba", "ab"] indx: 18
}
.exec () 가 호출 할 때 마다 변경 되지 않는 경우의 예 :
var str = "qqqABApppabacccaba", myexec, myexec2;
//doesn't go into the next one because no g flag
var rgxp = /(a)(ba)/;
myexec = rgxp.exec(str);
console.log(myexec); //["aba", "a", "ba"]
myexec = rgxp.exec(str);
console.log(myexec); //["aba", "a", "ba"]
//... ["aba", "a", "ba"]
//doesn't go into the next one because direct regexp
myexec2 = /(ab)a/gi.exec(str);
console.log(myexec2); //["ABA", "AB"]
myexec2 = /(ab)a/gi.exec(str);
console.log(myexec2); //["ABA", "AB"]
//... ["ABA", "AB"]
exec
모든 하위 선택을 얻기 위해 반복 합니다.