JS正则表达式匹配中文的问题
<!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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
var result = (new RegExp("^[\\u4e00-\\u9fa5]$")).test("所");
console.log(result);
跟 vim 没关系,本来结果就是
false
,在 console 里打印一下new RegExp("/^[\u4e00-\u9fa5]$/")
就知道了。或者
js里 // 是正则表达式字面量,new RegExp创建后面参数带的是正则的string,题主把概念搞混了
找了一圈只匹配中文的正则都不对呢?最后我还是这样来判断了:
/[\u4E00-\u9FA5\uF900-\uFA2D]/.test(value);
其实上面好多不好使用!!试试这个
我也正好碰到这个问题了
/[\u4E00-\u9FA5\uF900-\uFA2D]/.test(value);也不ok呢