请问一个 JS 代码,使用正则匹配中文的神奇问题。

11次阅读

共计 420 个字符,预计需要花费 2 分钟才能阅读完成。

// 这里理论上应该返回 false,但神奇的是居然返回 true

console.log(/^[u2F800-u2FA1F]+$/.test('abc'));

我这边正在写 JS,想使用正则来匹配中文。

最开始的范围为:[u4E00-u9FFF] 基本汉字,后面有朋友提醒 CJK 还有扩展 A 区块和扩展 B 区块,需要也加上去。

咨询了 GPT3.5 和查询了 wikipedia,把这个正则的匹配区间增加了 A 区块、B 区块、补充区块等。

然后就遇到上面神奇的问题,[u2F800-u2FA1F] 是中日韩兼容表意文字补充,来源:https://zh.wikipedia.org/wiki/%E4%B8%AD%E6%97%A5%E9%9F%93%E5%85%BC%E5%AE%B9%E8%A1%A8%E6%84%8F%E6%96%87%E5%AD%97%E8%A3%9C%E5%85%85,共 542 个字。但不知道为什么,测试后总返回 true。

请问哪位大佬知道为什么呢,求指点。

正文完
 0