在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 相关文章推荐
裁剪字符串trim()自定义改进版
Apr 10 Javascript
js setTimeout 常见问题小结
Aug 13 Javascript
jquery.idTabs 选项卡使用示例代码
Sep 03 Javascript
JQuery 实现在同一页面锚点链接之间的平滑滚动
Oct 29 Javascript
JavaScript中string转换成number介绍
Dec 31 Javascript
JavaScript插件化开发教程 (一)
Jan 27 Javascript
JS实现的仿淘宝交易倒计时效果
Nov 27 Javascript
angularjs ui-router中路由的二级嵌套
Mar 10 Javascript
使用 Element UI Table 的 slot-scope方法
Oct 10 Javascript
vue使用nprogress加载路由进度条的方法
Jun 04 Javascript
js实现可爱的气泡特效
Sep 05 Javascript
JavaScript中document.activeELement焦点元素介绍
Nov 27 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中基本符号及使用方法
2010/03/23 PHP
php 常用类汇总 推荐收藏
2010/05/13 PHP
PHP学习之整理字符串
2011/04/17 PHP
使用php语句将数据库*.sql文件导入数据库
2014/05/05 PHP
实现在同一方法中获取当前方法中新赋值的session值解决方法
2014/06/26 PHP
php文件上传简单实现方法
2015/01/24 PHP
php绘图之加载外部图片的方法
2015/01/24 PHP
thinkPHP框架整合tcpdf插件操作示例
2018/08/07 PHP
laravel实现登录时监听事件,添加登录用户的记录方法
2019/09/30 PHP
XML+XSL 与 HTML 两种方案的结合
2007/04/22 Javascript
js 跨域和ajax 跨域问题小结
2009/07/01 Javascript
javascript判断非数字的简单例子
2013/07/18 Javascript
js对列表中第一个值处理与jsp页面对列表中第一个值处理的区别详解
2013/11/05 Javascript
简介JavaScript中的setDate()方法的使用
2015/06/11 Javascript
谈谈我对JavaScript中typeof和instanceof的深入理解
2015/12/25 Javascript
vue项目中使用百度地图的方法
2018/06/08 Javascript
vue项目中实现图片预览的公用组件功能
2018/10/26 Javascript
Vue 中如何正确引入第三方模块的方法步骤
2019/05/05 Javascript
p5.js实现动态图形临摹
2019/10/23 Javascript
vue实现简单全选和反选功能
2020/09/15 Javascript
Python实现多属性排序的方法
2018/12/05 Python
Python递归函数实例讲解
2019/02/27 Python
Python数据类型之String字符串实例详解
2019/05/08 Python
Django实现whoosh搜索引擎使用jieba分词
2020/04/08 Python
CSS3 transforms应用于背景图像的解决方法
2019/04/16 HTML / CSS
Canvas高级路径操作之拖拽对象的实现
2019/08/05 HTML / CSS
Agoda西班牙:全球特价酒店预订
2017/06/03 全球购物
专科应届生求职信
2013/11/24 职场文书
银行职员思想汇报
2013/12/31 职场文书
青年教师培训方案
2014/02/06 职场文书
企业领导班子四风对照检查材料
2014/09/27 职场文书
股东出资证明书范例
2014/10/04 职场文书
乡镇党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
党的群众路线教育实践活动领导班子整改方案
2014/10/25 职场文书
公司市场部岗位职责
2015/04/15 职场文书
2015仓库保管员年终工作总结
2015/05/13 职场文书