g
정규식 에서 플래그 의 의미는 무엇입니까 ?
/.+/g
과 의 차이점은 무엇입니까 /.+/
?
답변
g
글로벌 검색 용입니다. 모든 발생과 일치한다는 의미입니다. 일반적으로 i
대소 문자 무시를 의미하는 것도 볼 수 있습니다.
참조 : 글로벌-JavaScript | MDN
“g”플래그는 문자열에서 가능한 모든 일치에 대해 정규식을 테스트해야 함을 나타냅니다.
g
플래그가 없으면 첫 번째 만 테스트합니다.
답변
설명 할 자바 스크립트의 예 :
> 'aaa'.match(/a/g)
[ 'a', 'a', 'a' ]
> 'aaa'.match(/a/)
[ 'a', index: 0, input: 'aaa' ]
답변
g
전역 검색 플래그입니다.
전역 검색 플래그는 RegExp가 문자열 전체에서 패턴을 검색하도록하여 주어진 패턴과 일치하는 모든 항목의 배열을 만듭니다.
차이 사이 있도록 /.+/g
하고하는 것은 /.+/
것입니다 g
버전 대신 첫 번째의 모든 발생을 찾을 수 있습니다.
답변
/.+/g
와 사이에는 차이가 없습니다. /.+/
둘 다 전체 문자열과 한 번만 일치하기 때문입니다. 는 g
정규 표현식 번 이상 일치하거나 경우가있는 그룹을 포함 할 수 있다면 차이가 .match()
일치하는 배열 대신 그룹의 배열을 반환됩니다.
답변
@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는 전역 검색을 정의합니다. 즉, 모든 행의 모든 인스턴스를 검색합니다.