답변:
g
글로벌 검색 용입니다. 모든 발생과 일치한다는 의미입니다. 일반적으로 i
대소 문자 무시를 의미하는 것도 볼 수 있습니다.
참조 : 글로벌-JavaScript | MDN
"g"플래그는 문자열에서 가능한 모든 일치에 대해 정규식을 테스트해야 함을 나타냅니다.
g
플래그가 없으면 첫 번째 만 테스트합니다.
var r = /a/g; console.log(r.test('a'), r.test('a')); // true false
g
전역 검색 플래그입니다.
전역 검색 플래그는 RegExp가 문자열 전체에서 패턴을 검색하도록하여 주어진 패턴과 일치하는 모든 항목의 배열을 만듭니다.
차이 사이 있도록 /.+/g
하고하는 것은 /.+/
것입니다 g
버전 대신 첫 번째의 모든 발생을 찾을 수 있습니다.
@matiska가 지적했듯이 g
플래그는lastIndex
속성도 .
이것의 매우 중요한 부작용은 일치하는 문자열에 대해 동일한 정규식 인스턴스를 재사용하는 경우 lastIndex
.
// regular regex
const regex = /foo/;
// same regex with global flag
const regexG = /foo/g;
const str = " foo foo foo ";
const test = (r) => console.log(
r,
r.lastIndex,
r.test(str),
r.lastIndex
);
// Test the normal one 4 times (success)
test(regex);
test(regex);
test(regex);
test(regex);
// Test the global one 4 times
// (3 passes and a fail)
test(regexG);
test(regexG);
test(regexG);
test(regexG);
이미 언급 된 g
플래그의 의미 외에도 regexp.lastIndex
속성에 영향 을줍니다.
lastIndex는 다음 일치를 시작할 인덱스를 지정하는 정규식 인스턴스의 읽기 / 쓰기 정수 속성입니다. (...)이 속성은 정규식 인스턴스가 전역 검색을 나타 내기 위해 "g"플래그를 사용한 경우에만 설정됩니다.
참조 : Mozilla 개발자 네트워크
g
->
모든 일치를 반환without g
->
첫 번째 일치를 반환예:
'1 2 1 5 6 7'.match(/\d+/)
를 반환합니다 ["1", index: 0, input: "1 2 1 5 6 7", groups: undefined]
. 보시다시피 우리는 첫 경기 만 할 수 있습니다 "1"
.'1 2 1 5 6 7'.match(/\d+/g)
모든 일치 항목의 배열을 반환합니다 ["1", "2", "1", "5", "6", "7"]
.