Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript 정규식 '/g' 플래그란? 문자열 전체 치환의 핵심 이해하기

/g 플래그란 무엇인가?

/g는 사용자의 작업을 한결 수월하게 만들어 주는 정규 표현식(regular expression) 플래그 중 하나입니다. 여기서 g는 'global(전역)'을 의미하며, 제공된 단어를 문자열 전체 범위에서 검색하도록 지시합니다. 따라서 문자열에 등장하는 특정 단어의 모든 항목을 다른 단어로 치환해야 할 때 /g 플래그가 반드시 필요합니다. 지금부터 예제와 함께 자세히 살펴보겠습니다.

/g 플래그 없이 replace() 사용하기

다음 예제에서는 문자열에 포함된 모든 blue라는 단어를 red로 바꾸려고 합니다. 일반적인 str.replace() 메서드를 사용했지만, 전역(global) 표시가 없기 때문에 첫 번째로 일치하는 'blue'만 변경되고 나머지 항목은 그대로 유지됩니다. 또한 JavaScript는 대소문자를 구분(case sensitive)하는 언어이므로 'Blue'와 'blue'는 서로 다른 단어로 처리된다는 점에 유의해야 합니다.

예제

<html>
<body>
<script>
var str = "Mr Blue has a blue house and a blue car";
var res = str.replace(/blue/, "red");
document.write(res);
</script>
</body>
</html>

출력 결과

Mr Blue has a red house and a blue car

실행 결과를 보면 소문자 'blue' 중 첫 번째 항목만 red로 변경되고, 두 번째 'blue'와 대문자 'Blue'는 원본 그대로 남아 있는 것을 확인할 수 있습니다.

/g 플래그를 적용한 replace() 사용하기

이번 예제에서는 전역 플래그(/g)를 추가했기 때문에 문자열 내의 모든 소문자 "blue"가 red로 치환됩니다. 다만 JavaScript는 대소문자를 구분하는 언어이므로 대문자 'Blue'는 그대로 유지됩니다. 만약 대소문자 구분 없이 문자열 전체의 모든 항목을 치환하고 싶다면 /gi처럼 i(대소문자 무시) 플래그를 함께 사용하면 됩니다.

예제

<html>
<body>
<script>
var str = "Mr Blue has a blue house and a blue car";
var res = str.replace(/blue/g, "red");
document.write(res);
</script>
</body>
</html>

출력 결과

Mr Blue has a red house and a red car

정리

/g 플래그는 정규 표현식이 문자열에서 패턴과 일치하는 모든 항목을 찾도록 만드는 핵심 요소입니다. 이 플래그가 없으면 replace() 메서드는 첫 번째 일치 항목만 처리하고 종료합니다. 따라서 문자열 치환 작업 시 의도한 결과를 얻으려면 /g 플래그의 사용 여부를 항상 고려해야 하며, 상황에 따라 i 플래그를 조합하여 대소문자 관련 문제까지 손쉽게 해결할 수 있습니다.