gpt4 book ai didi

javascript - Chrome 控制台中的 regExp 奇怪 react

转载 作者:行者123 更新时间:2023-11-29 19:11:45 25 4
gpt4 key购买 nike

作为以下正则表达式:

var reg = /(\.[\u4e00-\u9fa5A-Z_])+/i;
reg.test('.a.s');

只有Chrome为false,其他浏览器和节点都为true。

enter image description here

那是因为 Chrome regExp 引擎吗?


感谢@Wiktor Stribiżew 的回答,这个问题得到了解决。请引用他的回答。

============================================= =======================

这可能是 ES6 在执行 RegExp 时的一个错误。有人在 node 和 chrome 社区中报告了这个问题。引用这些:

https://github.com/nodejs/node/issues/7708?plg_nld=1&plg_uin=1&plg_auth=1&plg_nld=1&plg_usr=1&plg_vkey=1&plg_dev=1

https://bugs.chromium.org/p/v8/issues/detail?id=5199

最佳答案

最新的 Chrome 版本在符合 ES6 的 V8 上运行。

因此,\u9fa5A 被视为一个代码点,而不是 \u9fa5A,请参阅此测试:

 // Chorme 51.0.2704.103 m output is given on the right
console.log(
String.fromCharCode(parseInt("4e00", 16)), // => "一"
String.fromCharCode(parseInt("9fa5A", 16)), // => "署"
String.fromCharCode(parseInt("9fa5", 16)) // => "龥"
);

您需要确保使用 \u{XXXX} 符号和 /u 修饰符(将起作用)正确解析 \u 值仅限 ES6)或重新排列字符类部分,如下所示:

console.log(/(\.[\u{4e00}-\u{9fa5}A-Z_])+/iu.test('.a.s'));
// or rearrange the ranges:
console.log(/(\.[A-Z_\u4e00-\u9fa5])+/i.test('.a.s'));

关于javascript - Chrome 控制台中的 regExp 奇怪 react ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38349820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com