如何匹配JavaScript中的所有4字节UTF-8字符?

时间:2016-10-26 10:11:55

标签: javascript regex

我尝试了很多变体,例如/[\u0FFF-\uFFFF]/,但它对我来说并不像我预期的那样有效。

我问的原因是因为我使用的mysql版本不支持这些字符,并且当有表情符号或类似内容时会剪切字符串。目前,为新版本更新mysql不是解决方案。

1 个答案:

答案 0 :(得分:3)

根据this,代码点U + 10000到U + 10FFFF用4个字节编码。

使用最新的Node版本(v6,也许是v5,但我没有测试),你可以在这样的正则表达式中使用它们(注意u标志):

const str = 'hello world!';

console.log( /[\u{10000}-\u{10FFFF}]/u.test(str) );         // true
console.log( str.replace(/[\u{10000}-\u{10FFFF}]/gu, '') ); // `hello world!`

(更多信息here