在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 相关文章推荐
用jscript实现列出安装的软件列表
Jun 18 Javascript
js怎么终止程序return不行换jfslk
May 30 Javascript
Jquery读取URL参数小例子
Aug 30 Javascript
巧用replace将文字表情替换为图片
Apr 17 Javascript
jquery实现右侧栏菜单选择操作
Mar 04 Javascript
JavaScript中输出信息的方法(信息确认框-提示输入框-文档流输出)
Jun 12 Javascript
简单理解vue中Props属性
Oct 27 Javascript
Vue.js中用webpack合并打包多个组件并实现按需加载
Feb 17 Javascript
canvas实现环形进度条效果
Mar 23 Javascript
微信小程序实践之动态控制组件的显示/隐藏功能
Jul 18 Javascript
微信小程序新手教程之启动页的重要性
Mar 03 Javascript
记一次vue跨域的解决
Oct 21 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
日本因肺炎疫情影响,这几部动漫推延播放!
2020/03/03 日漫
php Memcache 中实现消息队列
2009/11/24 PHP
PHP mb_convert_encoding文字编码的转换函数介绍
2011/11/10 PHP
Laravel 5.5官方推荐的Nginx配置学习教程
2017/10/06 PHP
JavaScript动态修改背景颜色的方法
2015/04/16 Javascript
jQuery插件支持同一页面被多次调用
2016/02/14 Javascript
JavaScript 动态三角函数实例详解
2017/01/08 Javascript
nodejs搭建本地服务器并访问文件的方法
2017/03/03 NodeJs
移动端利用H5实现压缩图片上传功能
2017/03/29 Javascript
解决VUEX刷新的时候出现数据消失
2017/07/03 Javascript
vue实现留言板todolist功能
2017/08/16 Javascript
详解使用vue-cli脚手架初始化Vue项目下的项目结构
2018/03/08 Javascript
layui 表格的属性的显示转换方法
2018/08/14 Javascript
解决 window.onload 被覆盖的问题方法
2020/01/14 Javascript
vue路由结构可设一层方便动态添加路由操作
2020/08/31 Javascript
Python3.x中自定义比较函数
2015/04/24 Python
python Selenium爬取内容并存储至MySQL数据库的实现代码
2017/03/16 Python
基于django ManyToMany 使用的注意事项详解
2019/08/09 Python
pandas的to_datetime时间转换使用及学习心得
2019/08/11 Python
Python实现串口通信(pyserial)过程解析
2019/09/25 Python
详解Python可视化神器Yellowbrick使用
2019/11/11 Python
tensorflow多维张量计算实例
2020/02/11 Python
使用opencv中匹配点对的坐标提取方式
2020/06/04 Python
分布式全文检索引擎ElasticSearch原理及使用实例
2020/11/14 Python
Pytorch1.5.1版本安装的方法步骤
2020/12/31 Python
css3实现冲击波效果的示例代码
2018/01/11 HTML / CSS
三好学生自我鉴定
2013/12/17 职场文书
超市端午节活动方案
2014/01/23 职场文书
放飞梦想演讲稿600字
2014/08/26 职场文书
先进工作者事迹材料
2014/12/23 职场文书
2015年纪委工作总结
2015/05/13 职场文书
2015年法务工作总结范文
2015/05/23 职场文书
2015年小学教师培训工作总结
2015/07/21 职场文书
通讯稿范文
2015/07/22 职场文书
高中化学教学反思
2016/02/22 职场文书
个人向公司借款协议书
2016/03/19 职场文书