Error
SyntaxError: Invaild regular expression: invalid group specifier name (정규식 사파리 호환성 문제)
비오스터딩
2022. 9. 12. 16:54
크롬에서 아무 문제 없었는데,
아이폰으로 열어보니 흰 화면이 떴다.
개발자도구를 열어보니 발견한 에러
Invalid regular expression
... 정규식.....?
찾아보니 사파리에서는 후방탐색 정규식을 지원하지 않는다고했다.
허헣
후방탐색을 사용하지 않고 정규식으로 바꿔주기로했다.
url에서 search의 key로 value를 찾는 코드였다.
// before
const regExp = new RegExp(`(?<=${key}=)[^&]*`);
const queryValue: string = url.match(regExp)?.[0] || '';
// after
const regExp = new RegExp(`(`${key}`=)(.*?)[^&]*`);
const query: string = url.match(regExp)?.[0] || '';
const queryValue = query.replace(`${key}=`, '');
그냥 후방탐색하려는 문자열까지 포함해서 값을 얻은다음
replace해서 그 문자열은 빈스트링으로 만들어버렸다.
(.*?) : 앞의 패턴(문자열) 일치 후, 뒤에 오는 문자열을 만날때까지 포함되는 모든값
url을 파싱하기위해 필요했던 정규식이었는데,
URLSearchParams라는 내장메서드를 발견해서 그걸 사용했다.
반응형