티스토리 뷰

자바스크립트 정규 표현식 test() 메소드를 반복적으로 수행 할 경우 값이 계속 바뀌던 문제가 있었다.

 

문제의 원인은 정규 표현식의 전역 플래그(g) 때문이였다.

 

정규 표현식에 전역 플래그를 설정한 경우, test() 메소드는 정규 표현식의 lastIndex를 업데이트하게 된다.

test() 메소드와 exec() 메소드는 내부적으로 lastIndex부터 문자열을 검사하게 되는데, test() 메소드는 true를 반환했던 lastIndex부터 계속해서 검사하게 된다. 그리고 lastIndex는 false를 반환하기 전 까지 초기화가 안되는 특징이 있다.

따라서 같은 문자열을 계속해서 test() 메소드로 검사하게 되면 true와 false를 반복해서 리턴하게 된다.

 

다른 대안으로는 search() 메소드와 match() 메소드가 있다.

match() 메소드는 search() 메소드보다 실행이 느리기때문에 해결방법으로 search() 메소드를 활용했다.

 

참고 : developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test#%EC%A0%84%EC%97%AD_%ED%94%8C%EB%9E%98%EA%B7%B8%EC%99%80_test

 

RegExp.prototype.test() - JavaScript | MDN

RegExp.prototype.test() test() 메서드는 주어진 문자열이 정규 표현식을 만족하는지 판별하고, 그 여부를 true 또는 false로 반환합니다. The source for this interactive example is stored in a GitHub repository. If you'd like

developer.mozilla.org

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함