728x90
반응형
Javascript에서 정규식을 사용하는 경우가 자주 있는데 그때마다 잊어버리는 게 있다.
반복해서 정규식을 이용해 문자열을 찾는 경우가 있는데
항상 2번째에서는 다음과 같이 값이 나오지 않는 경우가 발생했다
let re = /ab/g;
let str = 'abc'
re.exec(str)
==> ["ab"]
re.exec(str)
==> null
이유는 RegExp
가 상태 저장(stateful)을 하기 때문이다.
이를 위해 RegExp.lastIndex
로 마지막으로 찾은 위치를 저장하는데
위의 예시에서는 처음 수행하면 ab를 찾아서 값이 2가 된다.
다음에 수행될 때는 마지막으로 찾은 위치부터 수행하기 때문에
문자열을 찾지 못하고 lastIndex
는 0으로 리셋된다.
그래서 반복해서 정규식으로 문자열을 찾으려면 정규식을 수행한 이후에
항상 lastIndex
를 0으로 설정해야 원하는 결과를 얻을 수 있다.
re.lastIndex = 0;
참고 문헌
반응형
'JS' 카테고리의 다른 글
[JS] video.js 자동 재생이 안될 때 해결 방법 (0) | 2020.09.24 |
---|---|
[JS] Electron으로 앱만들기 (0) | 2020.08.13 |
[JS] PWA 만들기 (0) | 2020.02.20 |
[JS] ejs SyntaxError (0) | 2020.01.25 |
[JS] Grunt Webpack 버전별로 빌드하기 (0) | 2020.01.25 |