Try   HackMD

Safari 出現 SyntaxError: Invalid regular expression: invalid group specifier name 錯誤

網站中如果有使用到正規表達式,Safari 瀏覽器會在某個正規規則下報出以下錯誤:SyntaxError: Invalid regular expression: invalid group specifier name,接著網站可能就會一片空白或是無法正常運作。

以下是我接手案子內的其中一段程式碼:

transPoint(point) { // 下面這段 Safari 會報錯,必須用 RegExp 包 return point.replace(/\B(?<!\.\d*)(?=(\d{3})+(?!\d))/g, ','); },

上面這段直接把正規規則包在 //g 裡在 Safari 上是會出錯的,需要使用 new RegExp('...', 'g') 包起來才可以,並且有使用到 \d 的部份要改用兩個反斜線來取代,例如 \d 需更改為 \\d

修改過後如下:

transPoint(point) { const regExp = new RegExp('\\B(?<!\\.\\d*)(?=(\\d{3})+(?!\\d))', 'g'); return point.replace(regExp, ','); },

參考資料

https://penueling.com/%E6%8A%80%E8%A1%93%E7%AD%86%E8%A8%98/safari-%E5%87%BA%E7%8F%BE-syntaxerror-invalid-regular-expression-invalid-group-specifier-name/

tags: javascript, safari, error