在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为table动态添加行的实现代码
Mar 30 Javascript
JavaScript实现Iterator模式实例分析
Jun 09 Javascript
JavaScript中数据结构与算法(一):栈
Jun 19 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(下)
Oct 28 Javascript
JavaScript原型及原型链终极详解
Jan 04 Javascript
纯JS前端实现分页代码
Jun 21 Javascript
AngularJS实现在ng-Options加上index的解决方法
Nov 03 Javascript
微信小程序 连续旋转动画(this.animation.rotate)详解
Apr 07 Javascript
ionic实现下拉刷新载入数据功能
May 11 Javascript
vue实现表格增删改查效果的实例代码
Jul 18 Javascript
详解Angularjs 自定义指令中的数据绑定
Jul 19 Javascript
更改BootStrap popover的默认样式及popover简单用法
Sep 13 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 连接mssql数据库 初学php笔记
2010/03/01 PHP
php实现读取超大文件的方法
2014/07/28 PHP
Php-Redis安装测试笔记
2015/03/05 PHP
windows系统php环境安装swoole具体步骤
2021/03/04 PHP
javascript 处理HTML元素必须避免使用的一种方法
2009/07/30 Javascript
左右悬浮可分组的网站QQ在线客服代码(可谓经典)
2012/12/21 Javascript
使用JavaScript动态设置样式实现代码(2)
2013/01/25 Javascript
使用js+jquery实现无限极联动
2013/05/23 Javascript
jQuery解决下拉框select设宽度时IE 6/7/8下option超出显示不全
2013/05/27 Javascript
使用JS CSS去除IE链接虚线框的三种方法
2013/11/14 Javascript
使用forever管理nodejs应用教程
2014/06/03 NodeJs
JavaScript的arguments对象应用示例
2014/09/15 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 语法
2015/01/09 Javascript
JS实现页面载入时随机显示图片效果
2016/09/07 Javascript
微信小程序开发之圆形菜单 仿建行圆形菜单实例
2016/12/12 Javascript
JavaScript仿支付宝6位数字密码输入框
2016/12/29 Javascript
Vue自定义指令详解
2017/07/28 Javascript
详谈js中标准for循环与foreach(for in)的区别
2017/11/02 Javascript
详解Javascript 中的 class、构造函数、工厂函数
2017/12/20 Javascript
Angular2实现的秒表及改良版示例
2019/05/10 Javascript
Python3利用Dlib19.7实现摄像头人脸识别的方法
2018/05/11 Python
python实现朴素贝叶斯算法
2018/11/19 Python
Appium Python自动化测试之环境搭建的步骤
2019/01/23 Python
Django模型序列化返回自然主键值示例代码
2019/06/12 Python
expedia比利时:预订航班+酒店并省钱
2018/07/13 全球购物
ALDO美国官网:加拿大女鞋品牌
2018/12/28 全球购物
C语言如何决定使用那种整数类型
2016/11/26 面试题
命名空间(namespace)和程序集(Assembly)有什么区别
2015/09/25 面试题
万户网络JAVA程序员岗位招聘笔试试卷
2013/01/08 面试题
《搭石》教学反思
2014/04/07 职场文书
关于读书的演讲稿400字
2014/08/27 职场文书
个人四风问题整改措施
2014/10/24 职场文书
监察建议书
2015/02/04 职场文书
人间正道是沧桑观后感
2015/06/15 职场文书
SpringCloud Alibaba项目实战之nacos-server服务搭建过程
2021/06/21 Java/Android
mysql使用instr达到in(字符串)的效果
2022/04/03 MySQL