在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 相关文章推荐
Javascript学习笔记8 用JSON做原型
Jan 11 Javascript
表单JS弹出填写提示效果代码
Apr 16 Javascript
文本框中禁止非数字字符输入比如手机号码、邮编
Aug 19 Javascript
jquery Ajax 实现加载数据前动画效果的示例代码
Feb 07 Javascript
浅析JavaScript 箭头函数 generator Date JSON
May 23 Javascript
JS组件Bootstrap Table使用实例分享
May 30 Javascript
php 修改密码实现代码
May 24 Javascript
React学习笔记之高阶组件应用
Jun 02 Javascript
解决ie11 SCRIPT5011:不能执行已释放Script的代码问题
May 05 Javascript
vue style width a href动态拼接问题的解决
Aug 07 Javascript
vue 动态组件(component :is) 和 dom元素限制(is)用法说明
Sep 04 Javascript
vue 中this.$set 动态绑定数据的案例讲解
Jan 29 Vue.js
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 Token(令牌)设计
2008/03/15 PHP
PHP实现事件机制的方法
2015/07/10 PHP
利用Laravel事件系统如何实现登录日志的记录详解
2017/05/20 PHP
php-msf源码详解
2017/12/25 PHP
PHP耦合设计模式实例分析
2018/08/08 PHP
php微信公众号开发之二级菜单
2018/10/20 PHP
js类 from qq
2006/11/13 Javascript
jquery DOM操作 基于命令改变页面
2010/05/06 Javascript
Javascript模块化编程(一)AMD规范(规范使用模块)
2013/01/17 Javascript
javascript 寻找错误方法整理
2014/06/15 Javascript
jqGrid中文文档之选项设置
2015/12/02 Javascript
原生js仿jquery animate动画效果
2016/07/13 Javascript
JavaScript省市级联下拉菜单实例
2017/02/14 Javascript
gulp加批处理(.bat)实现ng多应用一键自动化构建
2017/02/16 Javascript
vue.js单页面应用实例的简单实现
2017/04/10 Javascript
Nodejs+express+ejs简单使用实例代码
2017/09/18 NodeJs
vue 文件目录结构详解
2017/11/24 Javascript
微信小程序checkbox组件使用详解
2018/01/31 Javascript
django使用channels2.x实现实时通讯
2018/11/28 Javascript
深入了解JavaScript 防抖和节流
2019/09/12 Javascript
vue 实现在同一界面实现组件的动态添加和删除功能
2020/06/16 Javascript
Vue scoped及deep使用方法解析
2020/08/01 Javascript
浅谈JSON5解决了JSON的两大痛点
2020/12/14 Javascript
Python3指定路径寻找符合匹配模式文件
2015/05/22 Python
各个系统下的Python解释器相关安装方法
2015/10/12 Python
django 2.0更新的10条注意事项总结
2018/01/05 Python
numpy中以文本的方式存储以及读取数据方法
2018/06/04 Python
Python requests HTTP验证登录实现流程
2020/11/05 Python
HTML5 文件上传下载的实例代码
2017/07/03 HTML / CSS
印度首个本地在线平台:nearbuy
2019/03/28 全球购物
幼儿园儿童节主持词
2014/03/21 职场文书
保护环境倡议书500字
2014/05/19 职场文书
致我们终将逝去的青春观后感
2015/06/10 职场文书
《合作意向书》怎么写?
2019/08/20 职场文书
mysql中整数数据类型tinyint详解
2021/12/06 MySQL
使用CSS实现按钮边缘跑马灯动画
2023/05/07 HTML / CSS