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 속성은 반복문과 함께 사용하면 문자열 전체에서 일치하는 모든 패턴을 효율적으로 찾아낼 때 유용하게 활용됩니다.