FrontEnd/Javascript

[정규식에러/크로스브라우징] 모바일(IOS) 크롬, 사파리 에서 페이지 안뜰 때 (PC 정상 작동)

김평범님 2021. 12. 29. 21:45
반응형

모바일 IOS에서 코드 동작 안함

 

 

IOS 크롬 에러 발생 (PC는 정상 작동할 때)

전에 블로그 포스팅 중 천의 자리 콤마를 찍는 자바스크립트 정규식을 공유했었다.

https://ordinary-code.tistory.com/128

 

[nuxt/vue filter] 숫자 3자리(천자리) 마다 콤마 찍으면서 소수점 처리하기

자바스크립트에서 천 자리마다 콤마를 찍어줘야 하는 경우가 많다. 숫자에다가 천 자리마다 콤마를 찍기 위해서는 정규식을 이용해야 한다. Vue에서는 Filter를 이용해서 숫자 3 자리 마자 콤마를

ordinary-code.tistory.com

 

최근에 서비스 배포 후 모바일에서 페이지가 정상적으로 작동하지 않는다는 내용이 접수되어

처음에 vue router 문제인지, 아니면 redirect문제인지 여러 방면으로 삽질을 했었는데,

상상하지도 못했던 문제는 바로 정규식 때문이라는 점!

 

https://kunkunwoo.tistory.com/213

 

pc chrome 렌더링은 정상적으로 되는데, ios chrome에서 렌더링이 안될때 - (SyntaxError: Invalid regular expres

최근 chrome에서는 브라우저 랜더링이 정상적으로 되는데, ios에 있는 chrome에서 정상적으로 실행되지 않는 에러를 겪었다. 왜 그럴까 서칭을 해보니.. 저 위의 그림과 같이 ios chrome은 다른 엔진을

kunkunwoo.tistory.com

 

진짜 하루 넘게 삽질을 했었는데 나에게 발견된 강 같은 블로그 글로 다행히 에러를 해결했다.

오류는 아래와 같았다.

SyntaxError: Invalid regular expression: invalid group specifier name

 

완전히 상상도 못 했던 정체가 바로 정규식 때문이었다니..

문제가 되었던 코드는 아래와 같다.

numberFormat (value, numFix) => { 
	value = parseFloat(value); 
    if (!value) return '0'; 
    return value.toFixed(numFix).replace(/\B(?<!\.\d*)(?=(\d{3})+(?!\d))/g, ','); 
},

 

해당 코드는 천의 자리에서 콤마를 찍을 때 이용하는 정규식이었는데,

해당 정규식이 모바일 Safari(사파리)와 크롬의 브라우저 엔진에서는 돌아가지 않는 코드였다고 한다.

 

 

혹시 PC에서는 정상적으로 코드가 작동을 하는데,

모바일에서 코드가 갑자기 멈춰버린다면

그리고 안드로이드에서는 정상작동이 되는데 

IOS에서만 동작을 안 한다면 동작이 안 하는 정규식을 사용을 한 코드가 있는지를 확인해보도록 하자

반응형