在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类
Sep 08 Javascript
js贪吃蛇游戏实现思路和源码
Apr 14 Javascript
详解jQuery中的deferred对象的使用(一)
May 27 Javascript
AJAX和jQuery动态加载数据的实现方法
Dec 05 Javascript
详解原生js实现offset方法
Jun 15 Javascript
weex里Vuex state使用storage持久化详解
Sep 09 Javascript
jQuery选择器之子元素过滤选择器
Sep 28 jQuery
浅谈VUE防抖与节流的最佳解决方案(函数式组件)
May 22 Javascript
vue eslint简要配置教程详解
Jul 26 Javascript
vue 中的 render 函数作用详解
Feb 28 Javascript
解决VUE 在IE下出现ReferenceError: Promise未定义的问题
Nov 07 Javascript
vue整合百度地图显示指定地点信息
Apr 06 Vue.js
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
phpwind中的数据库操作类
2007/01/02 PHP
PHP 循环列出目录内容的函数代码
2010/05/26 PHP
php魔术函数__call()用法实例分析
2015/02/13 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
JS跨域总结
2012/08/30 Javascript
iframe异步加载实现点击左边菜单加载右边内容实例讲解
2013/03/04 Javascript
JavaScript定义类的几种方式总结
2014/01/06 Javascript
JQuery球队选择实例
2015/05/18 Javascript
jquery获得当前html页面源码的方法
2015/07/14 Javascript
四种参数传递的形式——URL,超链接,js,form表单
2015/07/24 Javascript
JavaScript基本的输出和嵌入式写法教程
2015/10/20 Javascript
JavaScript必知必会(五) eval 的使用
2016/06/08 Javascript
Jquery遍历select option和添加移除option的实现方法
2016/08/26 Javascript
Jquery Easyui选项卡组件Tab使用详解(10)
2016/12/18 Javascript
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
2017/04/19 Javascript
vue + vuex todolist的实现示例代码
2018/03/09 Javascript
微信小程序实现收藏与取消收藏切换图片功能
2018/08/03 Javascript
详解vue-router导航守卫
2019/01/19 Javascript
微信小程序收货地址API兼容低版本解决方法
2019/05/18 Javascript
JS组件库AlloyTouch实现图片轮播过程解析
2020/05/29 Javascript
[06:43]2018DOTA2国际邀请赛寻真——VGJ.Thunder
2018/08/11 DOTA
深入理解Python 代码优化详解
2014/10/27 Python
python executemany的使用及注意事项
2017/03/13 Python
django框架如何集成celery进行开发
2017/05/24 Python
Python+树莓派+YOLO打造一款人工智能照相机
2018/01/02 Python
利用pandas向一个csv文件追加写入数据的实现示例
2020/04/23 Python
python如何调用百度识图api
2020/09/29 Python
Python基于locals返回作用域字典
2020/10/17 Python
北美最大的手工艺品零售商之一:Michaels Stores
2019/02/27 全球购物
关于人生的感言
2014/01/17 职场文书
迟到检讨书大全
2014/01/25 职场文书
办公室文员岗位职责
2015/02/04 职场文书
个人收入证明格式
2015/06/24 职场文书
2016年寒假社会实践活动总结
2015/10/10 职场文书
Pytorch数据读取之Dataset和DataLoader知识总结
2021/05/23 Python
Python列表的索引与切片
2022/04/07 Python