2017-03-21 110 views
1

我有一个正则表达式,它可以找到字符串中的所有4字节的Unicode字符。我想让以下所有流行的浏览器兼容。正则表达式匹配4个字节的Unicode字符

下面的代码在Chrome和Firefox罚款,但Safari浏览器抛出“无效的正则表达式:范围出的顺序字符类”

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

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

+0

很高兴我的回答对你起作用。我今天没有投票,明天我会提出这个问题。 –

回答

3

Safari不支持ES6正则表达式语法。所有你能做的就是transpile正则表达式与正则表达式ES5符合语法:

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

+0

谢谢,它像一个字符一样工作! –