在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 网站换肤功能实现代码
Nov 02 Javascript
jquery ajax同步异步的执行最终解决方案
Apr 26 Javascript
一个封装js代码-----展开收起效果示例
Jul 03 Javascript
jquery常用特效方法使用示例
Apr 25 Javascript
使用js获取图片原始尺寸
Dec 03 Javascript
jquery ui resize 中border-box的bug修正
Apr 26 Javascript
最原始的jQuery注册验证方式
Oct 11 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
Sep 18 Javascript
JavaScript生成一个不重复的ID的方法示例
Sep 16 Javascript
node.js中stream流中可读流和可写流的实现与使用方法实例分析
Feb 13 Javascript
javascript History对象原理解析
Feb 17 Javascript
JS实现瀑布流效果
Mar 07 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使用fgetcsv读取csv文件出现乱码的解决方法
2014/11/08 PHP
php模拟用户自动在qq空间发表文章的方法
2015/01/07 PHP
PHP性能优化大全(php.ini)
2016/05/20 PHP
Redis使用Eval多个键值自增的操作实例
2016/11/04 PHP
php实现评论回复删除功能
2017/05/23 PHP
用dom+xhtml+css制作的一个相册效果代码打包下载
2008/01/24 Javascript
JS IE和FF兼容性问题汇总
2009/02/09 Javascript
js函数排序的实例代码
2013/07/01 Javascript
利用原生JavaScript获取元素样式只是获取而已
2014/10/08 Javascript
jQuery源码分析之Callbacks详解
2015/03/13 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
2015/04/06 Javascript
Javascript实现跑马灯效果的简单实例
2016/05/31 Javascript
jquery select插件异步实时搜索实例代码
2017/10/20 jQuery
JavaScript数据结构与算法之队列原理与用法实例详解
2017/11/22 Javascript
利用Vue2.x开发实现JSON树的方法
2018/01/04 Javascript
vue-cli+iview项目打包上线之后图标不显示问题及解决方法
2019/10/16 Javascript
小程序实现背景音乐播放和暂停
2020/06/19 Javascript
python网络编程学习笔记(四):域名系统
2014/06/09 Python
Python文件和流(实例讲解)
2017/09/12 Python
Python大数据之使用lxml库解析html网页文件示例
2019/11/16 Python
查看keras的默认backend实现方式
2020/06/19 Python
使用Python判断一个文件是否被占用的方法教程
2020/12/16 Python
python drf各类组件的用法和作用
2021/01/12 Python
关于h5中的fetch方法解读(小结)
2017/11/15 HTML / CSS
Roxy美国官网:澳大利亚冲浪、滑雪健身品牌
2016/07/30 全球购物
美国著名珠宝品牌之一:Jared The Galleria Of Jewelry
2016/10/01 全球购物
文件中有一组整数,要求排序后输出到另一个文件中
2012/01/04 面试题
我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
2014/03/30 面试题
葛优非诚勿扰搞笑征婚台词
2014/03/17 职场文书
警示教育活动总结
2014/05/05 职场文书
计算机科学与技术专业求职信
2014/09/03 职场文书
2016优秀护士先进个人事迹材料
2016/02/25 职场文书
如何在Python中创建二叉树
2021/03/30 Python
如何利用map实现Nginx允许多个域名跨域
2021/03/31 Servers
进行数据处理的6个 Python 代码块分享
2022/04/06 Python
Win11 Beta 预览版 22621.575 和 22622.575更新补丁KB5016694发布(附更新内容大全)
2022/08/14 数码科技