在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 相关文章推荐
jQuery一步一步实现跨浏览器的可编辑表格,支持IE、Firefox、Safari、Chrome、Opera
Aug 28 Javascript
多种方式实现JS调用后台方法进行数据交互
Aug 20 Javascript
Json序列化和反序列化方法解析
Dec 19 Javascript
JavaScript通过select动态更换图片的方法
Mar 23 Javascript
JS实现带缓冲效果打开、关闭、移动一个层的方法
May 09 Javascript
jQuery 全选 全部选 反选 实现代码
Aug 17 Javascript
javascript简易画板开发
Apr 12 Javascript
JavaScript中无法通过div.style.left获取值的解决方法
Feb 19 Javascript
echarts饼图扇区添加点击事件的实例
Oct 16 Javascript
webstorm添加*.vue文件支持
May 08 Javascript
VUE脚手架的下载和配置步骤详解
Apr 01 Javascript
jQuery实现开关灯效果
Aug 02 jQuery
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
php数组的概述及分类与声明代码演示
2013/02/26 PHP
用PHP和Shell写Hadoop的MapReduce程序
2014/04/15 PHP
Windows下PHP开发环境搭建教程(Apache+PHP+MySQL)
2016/06/13 PHP
Javascript类定义语法,私有成员、受保护成员、静态成员等介绍
2011/12/08 Javascript
extjs 时间范围选择自动判断的实现代码
2014/06/24 Javascript
jQuery截取指定长度字符串的实现原理及代码
2014/07/01 Javascript
使用node.js半年来总结的 10 条经验
2014/08/18 Javascript
解决ueditor jquery javascript 取值问题
2014/12/30 Javascript
jQuery中closest和parents的区别分析
2015/05/07 Javascript
jQuery+jsp实现省市县三级联动效果(附源码)
2015/12/03 Javascript
Vue中的Props(不可变状态)
2018/09/29 Javascript
实现高性能javascript的注意事项
2019/05/27 Javascript
使用typescript构建Vue应用的实现
2019/08/26 Javascript
Cordova(ionic)项目实现双击返回键退出应用
2019/09/17 Javascript
vue中的双向数据绑定原理与常见操作技巧详解
2020/03/16 Javascript
原生JavaScript写出Tabs标签页的实例代码
2020/07/20 Javascript
python双向链表实现实例代码
2013/11/21 Python
Python Property属性的2种用法
2015/06/21 Python
对Python3中dict.keys()转换成list类型的方法详解
2019/02/03 Python
Pandas中Series和DataFrame的索引实现
2019/06/27 Python
pygame实现打字游戏
2021/02/19 Python
python实现超级马里奥
2020/03/18 Python
Python接口测试环境搭建过程详解
2020/06/29 Python
Matplotlib 折线图plot()所有用法详解
2020/07/28 Python
基于canvas的骨骼动画的示例代码
2018/06/12 HTML / CSS
html5借用repeating-linear-gradient实现一把刻度尺(ruler)
2019/09/09 HTML / CSS
智利最大的网上商店:Linio智利
2016/11/24 全球购物
大二自我鉴定
2014/01/31 职场文书
优秀学生评语大全
2014/04/25 职场文书
初中新生军训方案
2014/05/13 职场文书
2014年保卫工作总结
2014/12/05 职场文书
2014年电话客服工作总结
2014/12/09 职场文书
检讨书范文大全
2015/05/07 职场文书
《将心比心》教学反思
2016/02/23 职场文书
初中语文教学反思范文
2016/03/03 职场文书
MySQL系列之二 多实例配置
2021/07/02 MySQL