본문 바로가기
공부/시행착오

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

by KANGJUNG 2021. 12. 31.
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 )
728x90
반응형

댓글