테스트 방법은 문자열이 특정 일반 규칙과 일치하는지 여부를 감지하는 데 사용됩니다. 문자열에 일반 규칙과 일치하는 텍스트가 포함되어 있으면 메서드는 true를 반환하고, 그렇지 않으면 false를 반환합니다.
사실 정규식에 전역 플래그(매개변수 g 포함)가 있는 경우 테스트 메서드도 다음과 같이 일반 개체의 lastIndex 속성에 영향을 받습니다.
으아악
이 영향은 exec 메소드 설명에서 분석하겠습니다.
exec 메소드는 정규식과 일치하는 문자열을 검색하는 데 사용됩니다. 일치하는 텍스트가 발견되면 결과 배열이 반환되고, 그렇지 않으면 null이 반환됩니다.
구문: exec(문자열)
exec 메소드에서 반환된 배열에는 index와 input이라는 두 가지 추가 속성이 포함되어 있으며 배열에는 다음과 같은 특징이 있습니다.
0번째 항목은 정규 표현식으로 캡처된 텍스트를 나타냅니다.
1st~n 항목은 1~n번째 역참조를 나타내며, 이는 다시 1~n번째 그룹에서 캡처한 텍스트를 가리킵니다. RegExp.$ + "1~n"을 사용하면 됩니다. 그룹을 순서대로 가져옵니다.
의 텍스트
index는 일치하는 문자열의 초기 위치를 나타냅니다.
input은 검색되는 문자열을 나타냅니다.
정규식에 전역 플래그 "g"가 있는지 여부에 관계없이 exec의 동작은 동일합니다. 그러나 정규식 개체의 동작은 다소 다릅니다. 정규식 개체가 다릅니다.
정규식 개체가 reg이고 감지된 문자가 문자열이며 reg.exec(string)의 반환 값이 array라고 가정합니다.
reg에 전역 플래그 "g"가 포함되어 있으면 reg.lastIndex 속성은 원래 문자열에서 일치하는 문자열의 끝 뒤의 위치, 즉 이때 다음 일치가 시작되는 위치를 나타냅니다. reg.lastIndex == array.index (일치의 시작 위치) + array[0].length (일치하는 문자열의 길이):
으아악
검색이 계속됨에 따라 array.index의 값이 증가합니다. 즉, reg.lastIndex의 값도 동기적으로 증가하므로 exec 메소드를 반복적으로 호출하여 문자열을 탐색할 수도 있습니다. 일치하는 모든 텍스트. exec 메소드가 더 이상 텍스트와 일치할 수 없으면 null을 반환하고 reg.lastIndex 속성을 0으로 재설정합니다.
위의 예에 이어 아래와 같이 코드를 계속 실행하여 위의 내용이 올바른지 확인합니다.
으아악
위 코드에서는 exec 메소드가 반복적으로 호출되면서 reg.lastIndex 속성이 결국 0으로 재설정됩니다.
질문 검토
테스트 메소드 설명에서 정규 표현식에 전역 플래그 g가 있으면 위 테스트 메소드의 실행 결과는 reg.lastIndex의 영향을 받게 된다는 질문을 남겼습니다. reg.lastIndex의 값은 항상 0이 아니며 다음 일치 항목의 시작 위치를 결정하므로 문자열에서 일치를 완료한 후 새 문자열 검색을 시작하려면 lastIndex를 수동으로 변경해야 합니다. 속성이 0으로 재설정됩니다. 다음 오류를 피하세요:
으아악
위 코드의 올바른 실행 결과는 "123456"이어야 하므로 두 번째 exec 메소드를 실행하기 전에 "reg.lastIndex = 0;"을 추가하는 것이 좋습니다.
reg에 전역 플래그 "g"가 포함되어 있지 않으면 exec 메서드의 실행 결과(배열)는 string.match(reg) 메서드의 실행 결과와 정확히 동일합니다.
이 스니펫은 정규 표현식 프런트엔드 사용자 매뉴얼 | louis 블로그에서 가져온 것입니다. 도움이 되었다면 좋아요를 눌러주세요~
정규 표현식이 실행되면 RegExp 개체의 lastIndex가 변경될 수 있습니다.
테스트 방법은 문자열이 특정 일반 규칙과 일치하는지 여부를 감지하는 데 사용됩니다. 문자열에 일반 규칙과 일치하는 텍스트가 포함되어 있으면 메서드는 true를 반환하고, 그렇지 않으면 false를 반환합니다.
사실 정규식에 전역 플래그(매개변수 g 포함)가 있는 경우 테스트 메서드도 다음과 같이 일반 개체의 lastIndex 속성에 영향을 받습니다.
으아악이 영향은 exec 메소드 설명에서 분석하겠습니다.
exec 메소드는 정규식과 일치하는 문자열을 검색하는 데 사용됩니다. 일치하는 텍스트가 발견되면 결과 배열이 반환되고, 그렇지 않으면 null이 반환됩니다.
구문: exec(문자열)
exec 메소드에서 반환된 배열에는 index와 input이라는 두 가지 추가 속성이 포함되어 있으며 배열에는 다음과 같은 특징이 있습니다.
0번째 항목은 정규 표현식으로 캡처된 텍스트를 나타냅니다.
1st~n 항목은 1~n번째 역참조를 나타내며, 이는 다시 1~n번째 그룹에서 캡처한 텍스트를 가리킵니다. RegExp.$ + "1~n"을 사용하면 됩니다. 그룹을 순서대로 가져옵니다.
index는 일치하는 문자열의 초기 위치를 나타냅니다.
input은 검색되는 문자열을 나타냅니다.
정규식에 전역 플래그 "g"가 있는지 여부에 관계없이 exec의 동작은 동일합니다. 그러나 정규식 개체의 동작은 다소 다릅니다. 정규식 개체가 다릅니다.
정규식 개체가 reg이고 감지된 문자가 문자열이며 reg.exec(string)의 반환 값이 array라고 가정합니다.
reg에 전역 플래그 "g"가 포함되어 있으면 reg.lastIndex 속성은 원래 문자열에서 일치하는 문자열의 끝 뒤의 위치, 즉 이때 다음 일치가 시작되는 위치를 나타냅니다. reg.lastIndex == array.index (일치의 시작 위치) + array[0].length (일치하는 문자열의 길이):
으아악검색이 계속됨에 따라 array.index의 값이 증가합니다. 즉, reg.lastIndex의 값도 동기적으로 증가하므로 exec 메소드를 반복적으로 호출하여 문자열을 탐색할 수도 있습니다. 일치하는 모든 텍스트. exec 메소드가 더 이상 텍스트와 일치할 수 없으면 null을 반환하고 reg.lastIndex 속성을 0으로 재설정합니다.
위의 예에 이어 아래와 같이 코드를 계속 실행하여 위의 내용이 올바른지 확인합니다.
으아악위 코드에서는 exec 메소드가 반복적으로 호출되면서 reg.lastIndex 속성이 결국 0으로 재설정됩니다.
질문 검토
테스트 메소드 설명에서 정규 표현식에 전역 플래그 g가 있으면 위 테스트 메소드의 실행 결과는 reg.lastIndex의 영향을 받게 된다는 질문을 남겼습니다. reg.lastIndex의 값은 항상 0이 아니며 다음 일치 항목의 시작 위치를 결정하므로 문자열에서 일치를 완료한 후 새 문자열 검색을 시작하려면 lastIndex를 수동으로 변경해야 합니다. 속성이 0으로 재설정됩니다. 다음 오류를 피하세요:
으아악위 코드의 올바른 실행 결과는 "123456"이어야 하므로 두 번째 exec 메소드를 실행하기 전에 "reg.lastIndex = 0;"을 추가하는 것이 좋습니다.
reg에 전역 플래그 "g"가 포함되어 있지 않으면 exec 메서드의 실행 결과(배열)는 string.match(reg) 메서드의 실행 결과와 정확히 동일합니다.
이 스니펫은 정규 표현식 프런트엔드 사용자 매뉴얼 | louis 블로그에서 가져온 것입니다. 도움이 되었다면 좋아요를 눌러주세요~