javascript中使用正则计算中文长度的例子


Posted in Javascript onApril 29, 2014

由于javascript是unicode编码的,所有的字符对于它来说一个就是一个,但是后台程序不是,通常在后台程序中一个中文是占两个字节的,这就导致了前后端校验长度不一致,这个问题可以通过正则来解决。

function getRealLen( str ) {
    return str.replace(/[^\x00-\xff]/g, '__').length; //这个把所有双字节的都给匹配进去了
}

附赠另一小则技巧:

有时候为了美观,不影响布局和界面,会以一些文案进行截字,但是中文的宽度和英文的宽度不一样,如果按照英文标准来截中文的,或者按中文标准截英文的,显然会忽长忽短,特别是昵称这类容易既有中文又有英文的东西,同样我们可以用上面的思路

function beautySub( str, len) {
       var reg = /[\u4e00-\u9fa5]/g,    //专业匹配中文
           slice = str.substring(0,len),
           realen = len - ( ~~( slice.match(reg) && slice.match(reg).length ) );
           return slice.substring(0, realen ? realen : 1);
}

这里我们认为一个中文字符是两个英文字符的宽度,如果你是完美主义者,应该想到j和w,m的宽度是不一样的,w和m以及大写的部分字母和中文的宽度是一致的,这个函数的正则还有相当大的改进空间,同时也可以指定截字的起始位置。
Javascript 相关文章推荐
在UpdatePanel内jquery easyui效果失效的解决方法
Apr 11 Javascript
js判断选择时间不能小于当前时间的示例代码
Sep 24 Javascript
js快速排序的实现代码
Dec 08 Javascript
iframe窗口高度自适应的实现方法
Jan 08 Javascript
javascript中的遍历for in 以及with的用法
Dec 22 Javascript
jQuery过滤选择器经典应用
Aug 18 Javascript
微信小程序--onShareAppMessage分享参数用处(页面分享)
Apr 18 Javascript
微信小程序Redux绑定实例详解
Jun 07 Javascript
es7学习教程之fetch解决异步嵌套问题的方法示例
Jul 21 Javascript
React Native 图片查看组件的方法
Mar 01 Javascript
js中对象和面向对象与Json介绍
Jan 21 Javascript
vue 实现移动端键盘搜索事件监听
Nov 06 Javascript
一个简单的Node.js异步操作管理器分享
Apr 29 #Javascript
IE浏览器中图片onload事件无效的解决方法
Apr 29 #Javascript
javascript的创建多行字符串的7种方法
Apr 29 #Javascript
Javascript实现的常用算法(如冒泡、快速、鸽巢、奇偶等)
Apr 29 #Javascript
当某个文本框成为焦点时即清除文本框内容
Apr 28 #Javascript
JS实现两个大数(整数)相乘
Apr 28 #Javascript
关于img的href和src取变量及赋值的方法
Apr 28 #Javascript
You might like
使用cookie实现统计访问者登陆次数
2013/06/08 PHP
thinkPHP实现将excel导入到数据库中的方法
2016/04/22 PHP
LNMP部署laravel以及xhprof安装使用教程
2017/09/14 PHP
PHP高效获取远程图片尺寸和大小的实现方法
2017/10/20 PHP
jquery each()源代码
2011/02/14 Javascript
实用的JS正则表达式(手机号码/IP正则/邮编正则/电话等)
2013/01/11 Javascript
原生js实现网页顶部自动下拉/收缩广告效果
2017/01/20 Javascript
微信小程序实现实时圆形进度条的方法示例
2017/02/24 Javascript
深入理解vue-loader如何使用
2017/06/06 Javascript
vue中的event bus非父子组件通信解析
2017/10/27 Javascript
Vue中computed与methods的区别详解
2018/03/24 Javascript
js合并两个数组生成合并后的key:value数组
2018/05/09 Javascript
小程序日历控件使用方法详解
2018/12/29 Javascript
[50:28]LGD女子学院第三期 DOTA2复仇之魂教学
2013/12/24 DOTA
python使用cPickle模块序列化实例
2014/09/25 Python
解决python字典对值(值为列表)赋值出现重复的问题
2019/01/20 Python
Python数据类型之String字符串实例详解
2019/05/08 Python
Python Web框架之Django框架Form组件用法详解
2019/08/16 Python
python 并发编程 多路复用IO模型详解
2019/08/20 Python
Python 取numpy数组的某几行某几列方法
2019/10/24 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
2020/02/28 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
2020/03/02 Python
CSS3 渐变(Gradients)之CSS3 径向渐变
2016/07/08 HTML / CSS
css3和jquery实现自定义checkbox和radiobox组件
2014/04/22 HTML / CSS
ziaja齐叶雅官方海外旗舰店:来自波兰的天然护肤品牌
2017/01/02 全球购物
Sneaker Studio罗马尼亚网站:购买运动鞋
2018/11/04 全球购物
德国健康生活方式网上商店:Landkaufhaus Mayer
2019/03/12 全球购物
美国在线纱线商店:Darn Good Yarn
2019/03/20 全球购物
个人授权委托书范本
2014/09/14 职场文书
超市开业庆典活动策划方案
2014/09/15 职场文书
2016年高校自主招生自荐信范文
2015/03/24 职场文书
2015年度服装销售工作总结
2015/03/31 职场文书
堂吉诃德读书笔记
2015/06/30 职场文书
投诉信格式范文
2015/07/02 职场文书
《正比例》教学反思
2016/02/23 职场文书
乡镇团代会开幕词
2016/03/04 职场文书