JavaScript计算中英文混合字符串长度的方法
作者:拾光时间:2026-10-27 21:38:38浏览:123
本文介绍在JavaScript中计算中英文混合字符串长度的技巧。通过正则表达式[^ -~]识别非ASCII字符(如汉字),将汉字长度额外累加,解决数据库提交时因汉字占位问题导致的长度超标错误。
JavaScript计算中英文混合字符串长度的方法
有同事在公司OA系统发帖,分享了在JavaScript中计算中英文混合字符串长度的方法。该方法主要依赖正则表达式实现。
具体实现代码如下:
var str = ”坦克是tank的音译”;
var len = str.match(/[^ -~]/g) == null ? str.length : str.length + str.match(/[^ -~]/g).length ; 查阅相关资料后,我对原理有了清晰的理解:
西文常用字符集的范围是从空格“ ”(0x20)到“~”(0x7e)。汉字不在此范围内,因此正则表达式[^ -~]用于匹配空格到“~”之外的字符。
相关代码逻辑如下:
string.match(regex)方法会返回一个数组,包含字符串string中所有匹配正则表达式regex的子串。因此:
str.match(/[^ -~]/g)会返回一个包含所有汉字的数组。例如:
var str = "dd大哥";
// 显示"大,哥",数组中包含两个汉字,数组长度为2
alert(str.match(/[^ -~]/g)); 通过上述逻辑,var len = str.match(/[^ -~]/g) == null ? str.length : str.length + str.match(/[^ -~]/g).length ;即可准确计算str的长度。
在JavaScript中,一个汉字通常被计算为长度1。这常导致提交到数据库时出现长度超标错误。使用此方法可在提交前进行预检测。
注:原始代码中存在部分符号错误,经修正后封装为如下函数。
修正后的代码如下:
function get_strlength (str)
{
var len = 0;
if (str.match(/[^ -~]/g) == null)
{
len = str.length;
}
else
{
len = str.length + str.match(/[^ -~]/g).length;
}
return len;
} 作者最新文章
JS处理含Emoji或中文的字符串转数组乱码问题
2026-11-05 16:12:28
JS怎么使用展开运算符合并对象
2026-11-05 14:42:18
ES6+环境下判断JS对象为空的简洁写法
2026-11-05 12:12:23
怎么通过replacer函数自定义JS中JSON的格式化输出
2026-11-05 11:19:44
JS正则表达式基础:字面量与RegExp构造函数的区别及常用元字符
2026-11-05 11:16:58
