상세 컨텐츠

본문 제목

[JavaScript] Uncaught SyntaxError: Invalid regular expression: /+/: Nothing to repeat

JavaScript

by 강정_DEV 2022. 3. 22. 13:08

본문

728x90

팝업이 안 나온다고 하여 확인해보니

Uncaught SyntaxError: Invalid regular expression: /+2022년 1월/: Nothing to repeat

if( option.match(info[i].LEVEL_SIGN) == null )

 위와 같은 조건에서 비교하는 exp_info[i].LEVEL_SIGN의 값이 "+2022년 1월"라서 나온 문제.

오래된 소스이기도 하고... 데이터 입력시엔 +가 들어갈 일이 없는데 다른 프로그램을 쓰다가 데이터 이전하면서 저런 데이터가 생긴 건지 누가 DB에 강제적으로 업데이트 친건지 어쨌든... search를 쓰던 match를 쓰던 아무 조치를 안 하고 사용한다면 비슷한 오류가 나올 것 같습니다.

 

var text = "ABCD 가나다라 가나다라마바사아자차가 +2021 -2021";
var search= "+2021";
text.search(search);

 '+'는 정규직에서 선행문자를 1번 이상 나타내는 문자열인데 해당 문자의 앞에 아무 문자가 없어서 나온 문제라고 추측했네요.

비슷한 예로 선행문자에 대한 처리를 하는 * (asterisk) 나 ? (question mark) 등에서도 같은 문제가 있을 것 같습니다.

var text = "ABCD 가나다라 가나다라마바사아자차가 +2021년 1월 -2021";
text.match("\\+2021");

해결 방법으로는 \ (backslash) 을 선행해준다거나 한다면 해결이 될 것 같습니다만...

 

저는 그냥 단순하게 match 대신 indexOf로 수정했습니다.

if( option.indexOf(info[i].LEVEL_SIGN) == -1 )

 

원글 : https://jira.tistory.com/186

 

반응형

댓글 영역