RegExp.test(‘abc’) === true || false ??

yoeubi
2 min readAug 20, 2020

--

어느날 정규표현식 코드를 수정하고 있었는데

위 코드처럼 값이 번갈아 true, false가 나오는 것이였다.

아무리 눈을 크게 뜨고 코드 앞줄을 봐도 건들이는 요인은 없었다.

알고보니 단 한 문자로 인해 벌어진 일이였다.

RegExp Flag 설정

RegExp 객체에 global(g) 또는 sticky(y) 플래그를 설정하는 경우

RegExp.exec(), RegExp.test() 메서드는

다음 일치를 시작할 인덱스(lastIndex)를 저장하는 stateful한 객체가 된다.

위 두 메서드를 실행시키면 내부적으로 lastIndex를 업데이트한다.

실패했을때 비로서 lastIndex를 0으로 초기화한다.

내부적으로 lastIndex를 가지고 있기때문에 위와 같이 다른 문자열을 넣어도 false가 뜨는 이슈가 발생한다.

이런 경우 lastIndex를 직접 0으로 초기화를 하면 된다.

참고 링크

Javascript regex returning true.. then false .. then true…

RegExp.prototype.exec()

RegExp.prototype.test()

--

--

yoeubi
yoeubi

Written by yoeubi

Junior Frontend engineer

No responses yet