티스토리 뷰
자바스크립트 정규 표현식 test() 메소드를 반복적으로 수행 할 경우 값이 계속 바뀌던 문제가 있었다.
문제의 원인은 정규 표현식의 전역 플래그(g) 때문이였다.
정규 표현식에 전역 플래그를 설정한 경우, test() 메소드는 정규 표현식의 lastIndex를 업데이트하게 된다.
test() 메소드와 exec() 메소드는 내부적으로 lastIndex부터 문자열을 검사하게 되는데, test() 메소드는 true를 반환했던 lastIndex부터 계속해서 검사하게 된다. 그리고 lastIndex는 false를 반환하기 전 까지 초기화가 안되는 특징이 있다.
따라서 같은 문자열을 계속해서 test() 메소드로 검사하게 되면 true와 false를 반복해서 리턴하게 된다.
다른 대안으로는 search() 메소드와 match() 메소드가 있다.
match() 메소드는 search() 메소드보다 실행이 느리기때문에 해결방법으로 search() 메소드를 활용했다.
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
'TIL' 카테고리의 다른 글
CKeditor5 값 가져오기 세팅하기 (0) | 2021.04.01 |
---|---|
데이터 베이스 키(key)의 종류 (0) | 2021.03.23 |
jQuery keyup() 메소드로 유효성 검사 하기 (0) | 2021.03.03 |
홈브루(Homebrew) 명령어 실행 시 Ignoring 문구가 뜨는 문제 (4) | 2021.02.26 |
자바스크립트(JavaScript) ES6, ES11 문법 간단 정리 (0) | 2021.02.25 |
- Total
- Today
- Yesterday
- 충돌에러
- rbenv
- 이클립스
- 스트림
- IDE
- Gson
- interface
- homebrew
- 도커
- S3
- JSON
- Set
- 데이터베이스
- Spring
- Docker
- Thymeleaf
- bootstrap
- 타임리프
- framework
- git
- 유효성 검사
- Stream
- Jackson
- optional
- gem
- Github
- 인텔리제이
- java
- EC2
- IntelliJ
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |