RegExp의 global 속성이란?
global 속성은 자바스크립트(JavaScript) RegExp 객체가 가지고 있는 읽기 전용(read-only) 불리언(Boolean) 속성입니다. 이 속성은 해당 정규 표현식이 전역 매칭(global matching)을 수행하도록 설정되어 있는지, 즉 정규 표현식이 "g" 플래그와 함께 생성되었는지 여부를 나타냅니다.
정규 표현식을 만들 때 "g" 플래그를 지정하면 대상 문자열에서 패턴과 일치하는 모든 부분을 찾게 됩니다. 반대로 "g" 플래그가 없다면 가장 처음 발견된 일치 항목 하나만 검색하고 종료합니다. 따라서 re.global 값을 확인하면 특정 RegExp 객체가 전역 검색 모드인지 쉽게 판단할 수 있습니다.
사용 예제
아래 코드를 실행하면 global 속성이 실제로 어떻게 동작하는지 확인할 수 있습니다.
<html>
<head>
<title>JavaScript RegExp global Property</title>
</head>
<body>
<script>
// "g" 플래그 없이 정규 표현식 생성
var re = new RegExp( "string" );
if ( re.global ){
document.write("Test1 - Global property is set");
} else {
document.write("Test1 - Global property is not set");
}
// "g" 플래그와 함께 정규 표현식 생성
re = new RegExp( "string", "g" );
if ( re.global ){
document.write("<br />Test2 - Global property is set");
} else {
document.write("<br />Test2 - Global property is not set");
}
</script>
</body>
</html>
실행 결과 분석
위 코드를 브라우저에서 실행하면 다음과 같은 결과가 출력됩니다.
- Test1: 첫 번째 RegExp 객체는 아무 플래그 없이 생성되었으므로 "Test1 - Global property is not set"이 출력됩니다. 즉,
re.global은 false를 반환합니다. - Test2: 두 번째 RegExp 객체는 "g" 플래그와 함께 생성되었으므로 "Test2 - Global property is set"이 출력됩니다. 즉,
re.global은 true를 반환합니다.
정리
global 속성은 직접 값을 변경할 수 없는 읽기 전용 속성으로, 정규 표현식이 생성될 때의 플래그 설정에 따라 그 값이 결정됩니다. 문자열 치환(replace)이나 전체 검색(match)처럼 문서 전체에서 패턴을 찾아야 하는 작업이라면 "g" 플래그를 사용해야 하며, 이때 global 속성을 통해 해당 설정 여부를 손쉽게 확인할 수 있습니다.