본문 바로가기
Node.js

[Node.js] 특수문자 정규표현식 오류

by yonikim 2021. 10. 22.
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