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
'Node.js' 카테고리의 다른 글
[Node.js] 웹훅을 이용하여 Slack 에 메시지 전송하기 - 2. 테스트 (0) | 2021.10.22 |
---|---|
[Node.js] 웹훅을 이용하여 Slack 에 메시지 전송하기 - 1. 설정하기 (0) | 2021.10.22 |
[ECMAScript] ES6 이후의 변경점 (0) | 2021.09.17 |
[Node.js] 가상화폐 매매 API 만들기 - 1. 세팅하기 (0) | 2021.07.26 |
[Node.js] AWS SDK - S3 (0) | 2021.05.31 |