在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应该如何来设置改变按钮input的onclick事件
Dec 10 Javascript
jquery ui bootstrap 实现自定义风格
Nov 14 Javascript
js改变embed标签src值的方法
Apr 10 Javascript
jQuery实现自动切换播放的经典滑动门效果
Sep 12 Javascript
详解JavaScript中的Unescape()和String() 函数
Nov 09 Javascript
JavaScript中各种引用类型的常用操作方法小结
May 05 Javascript
正则表达式(语法篇推荐)
Jun 24 Javascript
一个超简单的jQuery回调函数例子(分享)
Aug 08 Javascript
JavaScript中 DOM操作方法小结
Apr 25 Javascript
React Native中Navigator的使用方法示例
Oct 13 Javascript
JS中async/await实现异步调用的方法
Aug 28 Javascript
JavaScript的一些小技巧分享
Jan 06 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 register_shutdown_function()函数的使用示例
2015/06/23 PHP
详解PHP中的PDO类
2015/07/06 PHP
PHP实现图的邻接矩阵表示及几种简单遍历算法分析
2017/11/24 PHP
Laravel 自动生成验证的实例讲解:login / logout
2019/10/14 PHP
Windows Live的@live.com域名注册漏洞 利用代码
2006/12/27 Javascript
FireFox中textNode分片的问题
2007/04/10 Javascript
JavaScript中的Array对象使用说明
2011/01/17 Javascript
非html5实现js版弹球游戏示例代码
2013/09/22 Javascript
BootStrap的弹出框(Popover)支持鼠标移到弹出层上弹窗层不隐藏的原因及解决办法
2016/04/03 Javascript
限制复选框最多选择项的实现代码
2016/05/30 Javascript
javascript实现简易计算器的代码
2016/05/31 Javascript
jquery+ajax+text文本框实现智能提示完整实例
2016/07/09 Javascript
浅析location.href跨窗口调用函数
2016/11/22 Javascript
jquery操作ID带有变量的节点实例
2016/12/07 Javascript
详解基于vue的移动web app页面缓存解决方案
2017/08/03 Javascript
浅谈vuex之mutation和action的基本使用
2017/08/29 Javascript
ES6学习教程之模板字符串详解
2017/10/09 Javascript
vue中v-show和v-if的异同及v-show用法
2019/06/06 Javascript
[01:14:41]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第一场 1月8日
2021/03/11 DOTA
python 中的divmod数字处理函数浅析
2017/10/17 Python
Python实现简易版的Web服务器(推荐)
2018/01/29 Python
pandas将numpy数组写入到csv的实例
2018/07/04 Python
Python爬虫使用脚本登录Github并查看信息
2018/07/16 Python
python 经典数字滤波实例
2019/12/16 Python
Python动态导入模块和反射机制详解
2020/02/18 Python
Python 实现网课实时监控自动签到、打卡功能
2020/03/12 Python
Pycharm IDE的安装和使用教程详解
2020/04/30 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
2020/09/03 Python
python3 使用ssh隧道连接mysql的操作
2020/12/05 Python
html5指南-6.如何创建离线web应用程序实现离线访问
2013/01/07 HTML / CSS
美国学校用品、教室和教学商店:Discount School Supply
2018/04/04 全球购物
董事长职责范文
2013/11/08 职场文书
党员自我评议个人对照检查材料
2014/09/16 职场文书
个人事迹材料范文
2014/12/29 职场文书
建国70周年的心得体会(2篇)
2019/09/20 职场文书
Nginx Rewrite使用场景及配置方法解析
2021/04/01 Servers