我有一个可以在字符串中找到所有 4 字节 unicode 字符的正则表达式。我想让以下内容与所有流行的浏览器兼容。
以下代码在 Chrome 和 Firefox 中运行良好,但 Safari 抛出“无效的正则表达式:字符类中的范围乱序”
var match = 'aaaaaa'.match(/[\u{10000}-\u{10FFFF}]/gu);
Run Code Online (Sandbox Code Playgroud)
所以我的问题是我应该如何更改正则表达式以匹配字符串中的所有 4 字节 unicode 字符,而不使用正则表达式的 unicode 功能。
Safari 不支持 ES6 正则表达式语法。您所能做的就是转译正则表达式以符合 ES5 正则表达式语法:
console.log('aaaaaa'.match(/(?:[\uD800-\uDBFF][\uDC00-\uDFFF])/g));Run Code Online (Sandbox Code Playgroud)