입력 글자 외에 남아 있는 탐색 위치도 확인합니다
가상 자료 카드마다 글자 A가 있는지 검사한다고 합시다. AI가 /A/g 객체를 한 번 만들고 같은 글자 "A"에 test를 반복하면 결과가 참, 거짓, 참, 거짓으로 나올 수 있습니다. 원문 글자가 바뀌어서가 아닙니다. 같은 정규식 객체에 이전 검사의 탐색 위치가 남아 있기 때문입니다.
테스트(test, 일치 여부 검사)는 일치하는 부분이 있으면 true, 없으면 false를 돌려줍니다. g는 글로벌(global, 전체 탐색) 플래그입니다. 이 설정을 가진 정규식 객체는 래스트 인덱스(lastIndex, 다음 탐색을 시작할 위치)를 검사 중 바꿉니다. 활동은 입력과 플래그뿐 아니라 그 위치의 전후 값도 표시합니다.
한 글자를 찾은 뒤에는 위치 1에서 시작합니다
처음 lastIndex가 0이면 /A/g는 "A"의 첫 글자를 찾아 참을 돌려주고 lastIndex를 일치 구간 뒤인 1로 바꿉니다. 두 번째 호출은 같은 문자열의 위치 1부터 찾습니다. 그 뒤에는 A가 없으므로 실패하여 거짓을 돌려주고 lastIndex를 0으로 되돌립니다. 세 번째 호출은 다시 위치 0에서 출발합니다.
"ABA"로 바꾸면 첫 호출은 참·위치 1, 두 번째는 참·위치 3, 세 번째는 거짓·위치 0입니다. g가 있으면 문자열 처음부터 새로 찾는다는 식으로만 설명해서는 이 반복을 예측할 수 없습니다. 화면 표의 ‘검사 전 위치’와 ‘검사 후 위치’를 함께 보세요.
일치 여부만 묻는 검사에는 상태 처리를 정합니다
매 카드에 A가 있는지만 독립적으로 묻는다면 /A/처럼 g가 없는 표현식을 사용할 수 있습니다. 활동에서는 같은 객체를 계속 사용해도 "A"의 검사 결과가 매번 참입니다. 매번 /A/g 객체를 새로 만들거나 각 호출 직전에 lastIndex를 0으로 돌리는 방법도 기본 입력에서는 같은 결과를 냅니다.
어느 방법이 필요한지는 작업 목적에 따라 달라집니다. 한 문자열 안에서 다음 일치를 차례로 찾으려는 작업이라면 탐색 위치가 이어지는 성질이 필요할 수 있습니다. 그때 매번 0으로 되돌리면 첫 일치만 반복할 수 있습니다. 활동에서 ‘같은 객체 재사용’과 ‘매번 위치 초기화’를 바꾸며 무엇을 보존하려는지 설명해 보세요.
되풀이된 거짓을 글자 부재로 바로 번역하지 않습니다
이 활동의 글자는 A 하나로 고정하고, 입력은 A·ABA·BBB·빈 문자열 중에서 선택합니다. 빈 문자열이나 BBB는 모든 선택 방식에서 일치하지 않습니다. A·ABA에서는 객체 재사용과 플래그의 차이가 드러납니다. 반복 횟수를 바꾼 뒤에도 처음 검사 위치를 0으로 정한 새 관찰 묶음으로 실행합니다.
이 결과는 g가 있는 내장 정규식과 비어 있지 않은 패턴 A의 실험입니다. y 플래그, 빈 문자열에도 일치하는 패턴, 사용자 정의 exec, 임의의 긴 정규식 성능을 검수했다는 뜻은 아닙니다. AI가 ‘이번 행에는 A가 없다’고 보고했다면 검사 전 위치와 객체 재사용 여부를 먼저 확인하세요. 이 활동은 실제 학생 자료나 운영 로그를 읽지 않습니다.

