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

JavaScript lastIndex RegExp 속성의 역할과 활용 방법

JavaScript lastIndex 속성이란?

JavaScript의 lastIndex는 RegExp(정규 표현식) 객체의 속성으로, 문자열 내에서 다음 검색을 시작할 위치(인덱스)를 나타냅니다. 이 속성을 활용하면 exec()test() 같은 메서드를 반복적으로 호출하여, 문자열 안에 있는 모든 일치 항목(match)을 순차적으로 탐색할 수 있습니다.

단, lastIndex 속성은 정규 표현식에 "g"(global) 플래그가 설정된 경우에만 동작합니다. "g" 플래그가 없으면 매번 문자열의 처음부터 검색하기 때문에 lastIndex가 의미를 갖지 못합니다.

읽기/쓰기가 모두 가능한 속성

lastIndex는 읽기와 쓰기가 모두 가능한(read/write) 속성입니다. 따라서 필요에 따라 값을 직접 지정하여 대상 문자열에서 다음 검색이 시작될 위치를 조정할 수 있습니다.

또한 exec()test() 메서드는 일치하는 항목을 찾지 못하면 자동으로 lastIndex를 0으로 초기화합니다. 이 덕분에 검색 실패 후에도 다시 처음부터 새로운 검색을 시작할 수 있습니다.

예제 코드

다음 예제를 실행하면 JavaScript에서 lastIndex RegExp 속성이 어떻게 동작하는지 확인할 수 있습니다.

<html>
   <head>
      <title>JavaScript RegExp lastIndex Property</title>
   </head>
   <body>
      <script>
         var str = "JavaScript is an interesting scripting language";
         var re = new RegExp("script", "g");
         
         re.test(str);
         document.write("Test 1 - Current Index: " + re.lastIndex);
         
         re.test(str);
         document.write("<br />Test 2 - Current Index: " + re.lastIndex);
      </script>
   </body>
</html>

실행 결과 설명

위 코드에서는 "g" 플래그가 설정된 정규 표현식으로 문자열에서 "script"라는 단어를 찾습니다. 첫 번째 test() 호출 시 첫 번째 일치 항목을 발견하고, lastIndex에는 그 다음 검색 시작 위치가 저장됩니다. 두 번째 test() 호출 시에는 저장된 lastIndex 위치부터 이어서 검색하므로, 출력되는 인덱스 값이 달라지는 것을 확인할 수 있습니다.

이처럼 lastIndex 속성은 반복문과 함께 사용하면 문자열 전체에서 일치하는 모든 패턴을 효율적으로 찾아낼 때 유용하게 활용됩니다.