在javascript中如何得到中英文混合字符串的长度


Posted in Javascript onJanuary 17, 2014

有同事在公司的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; 
}
Javascript 相关文章推荐
javascript面向对象编程(一) 实例代码
Jun 25 Javascript
js更优雅的兼容
Aug 12 Javascript
javascript 中__proto__和prototype详解
Nov 25 Javascript
javascript巧用eval函数组装表单输入项为json对象的方法
Nov 25 Javascript
JQuery EasyUI的使用
Feb 24 Javascript
实例解析jQuery中proxy()函数的用法
May 24 Javascript
jQuery中的insertBefore(),insertAfter(),after(),before()区别介绍
Sep 01 Javascript
微信小程序之圆形进度条实现思路
Feb 22 Javascript
vue利用axios来完成数据的交互
Mar 23 Javascript
详解Vue SPA项目优化小记
Jul 03 Javascript
vue-router的两种模式的区别
May 30 Javascript
ant design vue中日期选择框混合时间选择器的用法说明
Oct 27 Javascript
JS阻止冒泡事件以及默认事件发生的简单方法
Jan 17 #Javascript
Js判断CSS文件加载完毕的具体实现
Jan 17 #Javascript
js使用eval解析json(js中使用json)
Jan 17 #Javascript
js window.open弹出新的网页窗口
Jan 16 #Javascript
jQuery$命名冲突怎么办如何解决
Jan 16 #Javascript
jQuery获得内容和属性示例代码
Jan 16 #Javascript
jQuery 追加元素的方法如append、prepend、before
Jan 16 #Javascript
You might like
做一个有下拉功能的留言版
2006/10/09 PHP
PHP 冒泡排序算法的实现代码
2010/08/08 PHP
关于初学PHP时的知识积累总结
2013/06/07 PHP
完美实现wordpress禁止文章修订和自动保存的方法
2014/11/03 PHP
PHP简单实现记录网站访问量功能示例
2018/06/06 PHP
完整显示当前日期和时间的JS代码
2007/09/17 Javascript
Javascript load Page,load css,load js实现代码
2010/03/31 Javascript
jQuery图片预加载 等比缩放实现代码
2011/10/04 Javascript
extjs关于treePanel+chekBox全部选中以及清空选中问题探讨
2013/04/02 Javascript
jquery 清空file域示例(兼容个浏览器)
2013/10/11 Javascript
JavaScript中DOM详解
2015/04/13 Javascript
详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
2015/12/03 Javascript
Angular的事件和表单详解
2016/12/26 Javascript
vue2.0之多页面的开发的示例
2018/01/30 Javascript
Vue项目中使用Vux的安装过程
2018/05/01 Javascript
bootstrap-table+treegrid实现树形表格
2019/07/26 Javascript
layui当点击文本框时弹出选择框,显示选择内容的例子
2019/09/02 Javascript
javascript实现智能手环时间显示
2020/09/18 Javascript
python实现协同过滤推荐算法完整代码示例
2017/12/15 Python
Python实现带参数与不带参数的多重继承示例
2018/01/30 Python
详解Python使用tensorflow入门指南
2018/02/09 Python
python和shell获取文本内容的方法
2018/06/05 Python
Python爬虫实现获取动态gif格式搞笑图片的方法示例
2018/12/24 Python
Python开启线程,在函数中开线程的实例
2019/02/22 Python
python把ipynb文件转换成pdf文件过程详解
2019/07/09 Python
20行Python代码实现视频字符化功能
2020/04/13 Python
Tensorflow tensor 数学运算和逻辑运算方式
2020/06/30 Python
移动通信行业实习自我鉴定
2013/09/28 职场文书
企业统计员岗位职责
2013/12/13 职场文书
运动会四百米广播稿
2014/01/19 职场文书
2014年卫生院工作总结
2014/12/03 职场文书
学生会辞职信
2015/03/02 职场文书
解决numpy数组互换两行及赋值的问题
2021/04/17 Python
【DOTA2】当街暴打?PSG LGD vs VG - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA
Python内置类型集合set和frozenset的使用详解
2022/04/26 Python
Java异常体系非正常停止和分类
2022/06/14 Java/Android