📝 个人简介
⭐ 个人主页:我是段段🙋
🍊 博客领域:编程基础、前端💻
🍅 写作风格:干货!干货!都是干货!
🍑 精选专栏:正则表达式
🛸 支持段段:点赞👍、收藏⭐、留言💬
问题: 在写项目时遇到需要匹配字符串中所有的汉字并且包括简单的中文标点符号
比如:匹配下面这个完成的字符串
let str = '上传文件,你好呀,我很好';
网上能够查到很多匹配汉字的正则
let reg = /[\u4e00-\u9fa5]+/g;
console.log(str.match(reg));
// 结果如下
['上传文件', '你好呀', '我很好']
从结果可以看出上面写的正则没有匹配到标点符号,
,所以将完整的字符串(str
)分隔开了
又从网上查找匹配中文标点的正则
// 匹配中文标点的正则
\u3002|\uff1f|\uff01|\uff0c|\u3001|\uff1b|\uff1a|\u201c|\u201d|\u2018|\u2019|\uff08|\uff09|\u300a|\u300b|\u3010|\u3011|\u007e
// 可以匹配以下中文标点符号(顺序是一一对应的)
// `。 ? ! , 、 ; : “ ” ‘ ’ ( ) 《 》 【 】 ~`
// 还可以简单的如下编写,下面的正则匹配 英文大小写字母+数字+汉字+标点符号
let reg = /[(\u4e00-\u9fa5)(A-Za-z0-9)(,。()【】{}!,.\-!)]+/g;
// 这种写法可以直接将标点符号显示出来,更加直观也更加方便了
Ps: 如果上面没有想要的标点符号,可以上网查找将中文符号
转换成Unicode编码
添加在表达式中即可
将刚才编写的正则表达式进行下简单的修改
let reg = /[(\u4e00-\u9fa5)(\u3002|\uff1f|\uff01|\uff0c|\u3001|\uff1b|\uff1a|\u201c|\u201d|\u2018|\u2019|\uff08|\uff09|\u300a|\u300b|\u3010|\u3011|\u007e)]+/g;
console.log(str.match(reg));
// 打印结果
['上传文件,你好呀,我很好']
可以看到这次结果是我们想要的形式,整个字符串都匹配到了~