JS正则表达式匹配中文的问题

发布于 2022-08-29 18:22:51 字数 422 浏览 27 评论 0

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    <script>
        var result = (new RegExp("/^[\u4e00-\u9fa5]$/")).test("所");
        console.log(result);
    </script>
</head>
<body>
</body>
</html>

为什么输出的是false?文件用vim :set fileencoding 确认是用UTF-8编码的

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

夏九 2022-09-05 18:22:51

var result = (new RegExp("^[\\u4e00-\\u9fa5]$")).test("所");
console.log(result);

苏大泽ㄣ 2022-09-05 18:22:51

跟 vim 没关系,本来结果就是 false,在 console 里打印一下 new RegExp("/^[\u4e00-\u9fa5]$/") 就知道了。

聊慰 2022-09-05 18:22:51
var result = (new RegExp("^[\\u4e00-\\u9fa5]$")).test("所");

或者

var result = /^[\u4e00-\u9fa5]$/.test("所");
凝望流年 2022-09-05 18:22:51

js里 // 是正则表达式字面量,new RegExp创建后面参数带的是正则的string,题主把概念搞混了

九歌凝 2022-09-05 18:22:51

找了一圈只匹配中文的正则都不对呢?最后我还是这样来判断了:

'要校验的字符串'.replace(/[\u4e00-\u9fa5]/g,'').length == 0
╰沐子 2022-09-05 18:22:51

/[\u4E00-\u9FA5\uF900-\uFA2D]/.test(value);
其实上面好多不好使用!!试试这个

尽揽少女心 2022-09-05 18:22:51

我也正好碰到这个问题了
/[\u4E00-\u9FA5\uF900-\uFA2D]/.test(value);也不ok呢

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文