JS 获取字符串中中文及标点符号个数
今天在做文本框的长度限制时,由于数据库中存储的是字节长度,但前端可能会输入中文。前端对长度限制无法直接限制。在网上查找资料后解决问题,特此记录。
汉字正则
var re = /[\u4E00-\u9FA5]/g;
/g代表可多次匹配正则
中文标点正则
var reg = /[\u3002|\uff1f|\uff01|\uff0c|\u3001|\uff1b|\uff1a|\u201c|\u201d|\u2018|\u2019|\uff08|\uff09|\u300a|\u300b|\u3008|\u3009|\u3010|\u3011|\u300e|\u300f|\u300c|\u300d|\ufe43|\ufe44|\u3014|\u3015|\u2026|\u2014|\uff5e|\ufe4f|\uffe5]/g;
包含:
| 中文符号 | 规则 | 中文符号 | 规则 |
|---|---|---|---|
| ( | \uff08 | ) | \uff09 |
| 〈 | \u3008 | 〉 | \u3009 |
| 《 | \u300a | 》 | \u300b |
| 「 | \u300c | 」 | \u300d |
| 『 | \u300e | 』 | \u300f |
| ﹃ | \ufe43 | ﹄ | \ufe44 |
| 〔 | \u3014 | 〕 | \u3015 |
| … | \u2026 | — | \u2014 |
| ~ | \uff5e | ﹏ | \ufe4f |
| ¥ | \uffe5 | 、 | \u3001 |
| 【 | \u3010 | 】 | \u3011 |
| , | \uff0c | 。 | \u3002 |
| ? | \uff1f | ! | \uff01 |
| : | \uff1a | ; | \uff1b |
| “ | \u201c | ” | \u201d |
| ‘ | \u2018 | ’ | \u2019 |
统计字符串中包含字节数
function charNum(IdName){
var hanziNum = 0;
var biaodianNum = 0;
var value = $('#+"IdName"+').val();
if(value.match(re)!=null){
hanziNum = value.match(re).length;
}
if(value.match(reg)!=null){
biaodianNum = value.match(reg).length;
}
//我在数据库中文字及符号均为三个字节,因此再加两倍
return value.length + length+hanziNum * 2 + biaodianNum * 2;
}
参考:https://blog.youkuaiyun.com/cysear/article/details/80435756
本文介绍了一种在JavaScript中统计字符串中汉字和中文标点符号数量的方法,通过使用正则表达式匹配并计算字节数,适用于前端文本框长度限制。
4062

被折叠的 条评论
为什么被折叠?



