js 정규식의 test, exec, match 메소드 차이점 설명
test
test는 해당 문자열에 패턴이 존재하는지 확인하기 위해 Boolean을 반환합니다.
var str = "1a1b1c";
var reg = new RegExp("1.", "");
alert(reg.test(str)) // true
exec
exec는 현재 일치하는 결과를 찾아서 배열로 반환합니다.
var str = "1a1b1c";
var reg = new RegExp("1.", "");
var arr = reg.exec(str);
패턴이 존재하지 않는 경우 이면 arr은 null이고, 그렇지 않으면 arr은 항상 값이 현재 일치하는 길이 1의 배열입니다. arr에는 세 가지 속성도 있습니다. index는 현재 일치 항목의 위치이고, lastIndex는 현재 일치 항목의 끝 위치입니다(index는 현재 일치 항목의 길이입니다). input 위의 예에서 입력은 str입니다.
exec 메소드는 매개변수 g의 영향을 받습니다. g를 지정하면 다음에 exec가 호출될 때 마지막으로 일치하는 lastIndex부터 검색이 시작됩니다.
var str = "1a1b1c";
var reg = new RegExp("1.", "");
alert(reg.exec(str)[0]);
alert(reg .exec(str)[0]);
위의 두 출력은 모두 1a입니다. 이제 지정된 매개변수 g를 살펴보세요.
var str = "1a1b1c";
var reg = new RegExp("1.", "g");
alert(reg.exec(str)[0 ]);
alert(reg.exec(str)[0]);
위의 첫 번째는 1a를 출력하고, 두 번째는 1b를 출력합니다.
match
match는 String 객체의 메서드입니다.
var str = "1a1b1c";
var reg = new RegExp("1.", "");
alert(str.match(reg));
match 이 방법은 약간 exec 와 비슷하지만 exec는 RegExp 개체의 메서드이고 math는 String 개체의 메서드입니다. 둘 사이의 또 다른 차이점은 매개변수 g의 해석입니다.
매개변수 g를 지정하면 match는 모든 결과를 한 번에 반환합니다.
var str = "1a1b1c";
var reg = new RegExp("1.", "g");
alert(str.match(reg));
//alert(str .match(reg)); // 이 문장의 결과는 이전 문장과 동일합니다.
이 결과는 1a, 1b, 1c의 세 가지 요소로 구성된 배열입니다.
JavaScript에서는 정규식을 자주 사용하는데, 정규식에서는 Match와 Test 두 함수를 자주 사용하는데, 물론 Exec 코드를 통해 차이점을 구별해 보겠습니다.
일치 예시
출력
----------------------
A 1
B 2
C 3
D 4
E 5
a 27
b 28
c 29
d 30
e 31
출력
----------------------
abb 3
ab 9