第5章 匹配中文(utf-8编码)
每个字符(中文、英文字母、数字、各种符号、拉丁文、韩文、日文等)都对应着一个Unicode编码。
查看Unicode编码,找到中文的部分,然后获取中文的Unicode编码的区间,就可以用正则匹配了。
前面我们用[a-z]表示小写字母,[0-9]表示数字,这就是一个范围表示,如果有一个数x能够表示第一个中文,有一个数y能够表示最后一个中文,那么[x-y]就可以表示所有的中文了。
中文的Unicode编码从4E00开始,到9FA5结束。
[u4E00-u9FA5]这个区间就能够表示中文。
完整的Unicode编码表:http://blog.csdn.net/hherima/article/details/9045861
代码语言:javascript复制 var str = "你好,世界";
var res = str.match(/[u4E00-u9FA5]/g);
console.log(res);//["你", "好", "世", "界"]
案例二
解决结巴程序
把“今今今天晚晚晚晚晚晚上吃吃吃吃吃吃鸡”字符串换成单字的形式,即“今天晚上吃鸡”;
核心思想:匹配到重复的字符时,保留一个。
代码语言:javascript复制 var str = "今今今天晚晚晚晚晚晚上吃吃吃吃吃吃鸡";
//今天晚上吃鸡
var res = str.replace(/([u4E00-u9FA5])1 /g, '$1');
console.log(res);