JS 获取字符串中中文及标点符号个数

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.csdn.net/cysear/article/details/80435756

你可能感兴趣的:(js)