正则匹配中文问题

条件:匹配中英文加下划线5-15位
var pattern = /^[u4E00-u9FA5A-Za-z0-9_]{5,15}$/; 大家觉得这个正则有问题吗?问题是个别中文匹配不到呢
var str = "㷣地方aa123_";
pattern.test(str); //返回false

阅读 2.7k
3 个回答

有两个问题:

  1. 你忘了加反斜杠了(或者是markdown给你搞没了),应该是这样
var pattern = /^[\u4E00-\u9FA5A-Za-z0-9_]{5,15}$/;
  1. “㷣”(\u3DE3)这个字不在\u4E00-\u9FA5A范围内。

正确写法应该是

/^[A-Za-z0-9_\u4E00-\u9FA5]{5,15}$/

那个‘㷣’之所以匹配不了是因为它的unicode编码为\u3de3
unicode编码转换工具

问题:
Unicode汉字编码范围u4E00-u9FA5
Unicode汉字编码表
查询了编码表发现㷣(xing)字不在Unicode编码范围所以会返回false
unicode转中文,中文转unicode,参考@zifengb
修改后的正则表达式

var pattern = /^[\u4e00-\u9fa5\u3de3_a-zA-Z0-9]{5,15}$/; 
var str = "㷣地方aa123_"; 
str.match(pattern);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题