在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 textarea的长度进行验证
May 06 Javascript
Javascript 类型转换方法
Oct 24 Javascript
jquery实现的可隐藏重现的靠边悬浮层实例代码
May 27 Javascript
javascript的数组和常用函数详解
May 09 Javascript
JavaScript实现倒计时代码段Item1(非常实用)
Nov 03 Javascript
基于javascript实现图片懒加载
Jan 05 Javascript
浅谈angularjs module返回对象的坑(推荐)
Oct 21 Javascript
Websocket协议详解及简单实例代码
Dec 12 Javascript
jQuery点击导航栏选中更换样式的实现代码
Jan 23 Javascript
Vue.js 2.0 移动端拍照压缩图片上传预览功能
Mar 06 Javascript
javascript实现点亮灯泡特效示例
Oct 15 Javascript
JavaScript判断浏览器版本的方法
Nov 03 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
php IP转换整形(ip2long)的详解
2013/06/06 PHP
关于B/S判断浏览器断开的问题讨论
2008/10/29 Javascript
JavaScript 轻松搞定快捷留言功能 只需一行代码
2010/04/01 Javascript
jQuery EasyUI API 中文文档 - ProgressBar 进度条
2011/09/29 Javascript
深入理解JavaScript是如何实现继承的
2013/12/12 Javascript
jquery实现鼠标滑过小图时显示大图的方法
2015/01/14 Javascript
Javascript 使用ajax与C#获取文件大小实例详解
2017/01/13 Javascript
jQuery插件echarts去掉垂直网格线用法示例
2017/03/03 Javascript
带你了解session和cookie作用原理区别和用法
2017/08/14 Javascript
parabola.js抛物线与加入购物车效果的示例代码
2017/10/25 Javascript
深入理解requireJS-实现一个简单的模块加载器
2018/01/15 Javascript
element-ui表格列金额显示两位小数的方法
2018/08/24 Javascript
layui 实现表格某一列显示图标
2019/09/19 Javascript
[00:17]DOTA2荣耀之路5:It’s a disastah!
2018/05/28 DOTA
Python入门及进阶笔记 Python 内置函数小结
2014/08/09 Python
Python数据结构与算法之图结构(Graph)实例分析
2017/09/05 Python
Python装饰器模式定义与用法分析
2018/08/06 Python
Django框架之DRF 基于mixins来封装的视图详解
2019/07/23 Python
PyTorch和Keras计算模型参数的例子
2020/01/02 Python
win10下python3.8的PIL库安装过程
2020/06/08 Python
python实现mask矩阵示例(根据列表所给元素)
2020/07/30 Python
Python try except else使用详解
2021/01/12 Python
施华洛世奇水晶荷兰官方网站:SWAROVSKI荷兰
2017/05/12 全球购物
国外最大的眼镜网站:Coastal
2017/08/09 全球购物
The North Face官方旗舰店:美国著名户外品牌
2020/09/28 全球购物
生物制药毕业生自荐信
2013/10/16 职场文书
QQ空间主人寄语大全
2014/04/12 职场文书
行政文员实习自我鉴定范文
2014/09/14 职场文书
2015初中政治教学工作总结
2015/07/21 职场文书
《最后一头战象》教学反思
2016/02/16 职场文书
学习心得体会
2019/06/20 职场文书
话题作文之自信作文
2019/11/15 职场文书
如何利用Matlab制作一款真正的拼图小游戏
2021/05/11 Python
Vue3.0中Ref与Reactive的区别示例详析
2021/07/07 Vue.js
Python 类,对象,数据分类,函数参数传递详解
2021/09/25 Python
Redis sentinel哨兵集群的实现步骤
2022/07/15 Redis