在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 相关文章推荐
ext读取两种结构的xml的代码
Nov 05 Javascript
js利用div背景,做一个竖线的效果。
Nov 22 Javascript
js 延迟加载 改变JS的位置加快网页加载速度
Dec 11 Javascript
JS使用for循环遍历Table的所有单元格内容
Aug 21 Javascript
用js通过url传参把数据从一个页面传到另一个页面
Sep 01 Javascript
如何在node的express中使用socket.io
Dec 15 Javascript
canvas实现图像截取功能
Feb 06 Javascript
JS库之ParticlesJS使用简介
Sep 12 Javascript
JS实现的判断方法、变量是否存在功能示例
Mar 28 Javascript
微信小程序实现限制用户转发功能的实例代码
Feb 22 Javascript
Javascript前端下载后台传来的文件流代码实例
Aug 18 Javascript
vue选项卡切换的实现案例
Apr 11 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
PHP 无限级分类
2017/05/04 PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
2017/09/26 PHP
jQuery 中关于CSS操作部分使用说明
2007/06/10 Javascript
DWR Ext 加载数据
2009/03/22 Javascript
$.ajax返回的JSON无法执行success的解决方法
2011/09/09 Javascript
从数据结构的角度分析 for each in 比 for in 快的多
2013/07/07 Javascript
jQuery 快速结束当前正在执行的动画
2013/11/20 Javascript
纯Javascript实现ping功能的方法
2015/03/20 Javascript
JavaScript 2018 中即将迎来的新功能
2018/09/21 Javascript
vuejs+element UI点击编辑表格某一行时获取内容填入表单的示例
2018/10/31 Javascript
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
JavaScript页面倒计时功能完整示例
2019/05/15 Javascript
vue按需加载实例详解
2019/09/06 Javascript
微信浏览器下拉黑边解决方案 wScroollFix
2020/01/21 Javascript
如何在vue 中使用柱状图 并自修改配置
2021/01/21 Vue.js
ajax jquery实现页面某一个div的刷新效果
2021/03/04 jQuery
[01:14]TI珍贵瞬间系列(六):冠军
2020/08/30 DOTA
wxPython学习之主框架实例
2014/09/28 Python
python中django框架通过正则搜索页面上email地址的方法
2015/03/21 Python
深入讲解Java编程中类的生命周期
2016/02/05 Python
python中函数总结之装饰器闭包详解
2016/06/12 Python
关于Python中空格字符串处理的技巧总结
2017/08/10 Python
python实现树形打印目录结构
2018/03/29 Python
解决pyqt5中QToolButton无法使用的问题
2019/06/21 Python
linux下python中文乱码解决方案详解
2019/08/28 Python
Python 实现将数组/矩阵转换成Image类
2020/01/09 Python
解决CSS3 transition-delay 属性默认值0不带单位失效的问题
2020/10/29 HTML / CSS
加拿大时尚潮流大码女装购物网站:Addition Elle
2018/04/02 全球购物
公司拓展活动方案
2014/02/13 职场文书
领导批评与自我批评范文
2014/10/16 职场文书
会计求职简历自我评价
2015/03/10 职场文书
市场督导岗位职责
2015/04/10 职场文书
2015年志愿者服务工作总结
2015/04/20 职场文书
质检员工作总结2015
2015/04/25 职场文书
2016习总书记系列重要讲话心得体会
2016/01/15 职场文书
Python实现查询剪贴板自动匹配信息的思路详解
2021/07/09 Python