\w是否匹配汉字?

const reg = new RegExp('(\\w+)','g');
const match = reg.exec('颜色');
console.log(match); // null

上面的代码最后输出null,也就是不匹配。加括号是因为想把匹配到的汉字摘出来。怎么实现呢?
如从下面句子中摘出汉字'红色:绿色;感叹色!'

阅读 10k
5 个回答

\w 明确不支持汉字, 它等价于 [A-Za-z0-9_]

你的需求可以这样解决(如果你的字符串都是这个格式):

'红色:绿色;感叹色!'.match(/(\S+?):(\S+?);(\S+?)!/)

运行结果是:

图片描述

也可以这样解决:

'红色:绿色;感叹色!'.match(/([\u4e00-\u9fa5]+)/g)

运行结果是:

图片描述


做个广告, 欢迎参与我在sf讲堂中的 一个小时学会使用正则表达式 课程 (可看回放)

[\u4e00-\u9fa5]

\w是匹配不到汉字的,匹配汉字需要这个表达式

const reg = /[\u4e00-\u9fa5]+/;
const match = reg.exec('颜色');
console.log(match); // null

参考这篇文章,可以进一步深入学习正则:正则表达式前端使用手册

   var str='红色:绿色;感叹色!'; 
   str.split(/[:;]/);

w表示[a-zA-Z0-9];
汉字匹配:[u4e00-u9fa5]

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进