正则表达式匹配 4 个字节的 unicode 字符

Rol*_*oós 4 javascript regex

我有一个可以在字符串中找到所有 4 字节 unicode 字符的正则表达式。我想让以下内容与所有流行的浏览器兼容。

以下代码在 Chrome 和 Firefox 中运行良好,但 Safari 抛出“无效的正则表达式:字符类中的范围乱序”

var match = 'aaaaaa'.match(/[\u{10000}-\u{10FFFF}]/gu);
Run Code Online (Sandbox Code Playgroud)

所以我的问题是我应该如何更改正则表达式以匹配字符串中的所有 4 字节 unicode 字符,而不使用正则表达式的 unicode 功能。

Wik*_*żew 6

Safari 不支持 ES6 正则表达式语法。您所能做的就是转译正则表达式以符合 ES5 正则表达式语法:

console.log('aaaaaa'.match(/(?:[\uD800-\uDBFF][\uDC00-\uDFFF])/g));
Run Code Online (Sandbox Code Playgroud)