Node.js
[Node.js] 특수문자 정규표현식 오류
yonikim
2021. 10. 22. 11:48
728x90
검색 키워드를 아래와 같이 정규표현식 처리를 해줬는데,
const regex = new RegExp(search, "gi")
'[', '(', '?' 등과 같은 특수문자 입력시 아래와 같은 오류가 발생했다.
Invalid regular expression: /[/: Unterminated character class
아래와 같이 특수문자를 replace 처리해 주면 해결 완료!
const escapeRegExp = (value) => value.replace(/[.*+?^${}()<>|[\]\\]/gi, "\\$&")
let search = '[Node.js] 특수문자 정규 표현식 오류'
search = escapeRegExp(search)
const regex = new RegExp(search, 'gi')
console.log(regex)
// =====> /\[Node\.js\] 특수문자 정규 표현식 오류/gi
정규표현식을 사용할 때 /[.*+?^${}()<>|[\]\\]/gi 와 같이 슬래쉬('/') 뒤에 g 나 gi 를 디폴트로 넣어 사용했을텐데, 이는 무엇일까?
이는 수정자(Modifier) 라고 한다.
Modifier | Expression |
g | 전역 검색 |
i | 대소문자 구분 없이 검색 |
m | 다중행(multi-line) 검색 |
s | . 에 개행 문자도 매칭(ES2018) |
u | 유니코드; 패턴을 유니코드 코드 포인트의 나열로 취급 |
y | stick 검색 수행. 지정된 인덱스로 문자열 검색 |
즉, /[.*+?^${}()<>|[\]\\]/gi 는 슬래쉬('/') 사이의 모든(g) 문자를, 대소문자 구분 없이(i) 치환하겠다 라는 뜻이다.
(참조: https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Regular_Expressions)
728x90