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 相关文章推荐
让焦点自动跳转
Jul 01 Javascript
文本框的字数限制功能jquery插件
Nov 24 Javascript
js动态在form上插入enctype=multipart/form-data的问题
May 24 Javascript
jquery.post用法示例代码
Jan 03 Javascript
node.js中的fs.readFile方法使用说明
Dec 15 Javascript
JavaScript 实现打印,打印预览,打印设置
Dec 30 Javascript
JavaScript的Date()方法使用详解
Jun 09 Javascript
JavaScript常用正则验证函数实例小结【年龄,数字,Email,手机,URL,日期等】
Jan 23 Javascript
webpack学习--webpack经典7分钟入门教程
Jun 28 Javascript
详解react-native-fs插件的使用以及遇到的坑
Sep 12 Javascript
浅谈vue的几种绑定变量的值 防止其改变的方法
Mar 01 Javascript
微信小程序文章详情页跳转案例详解
Jul 09 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
PHP中str_replace函数使用小结
2008/10/11 PHP
php根据用户语言跳转相应网页
2015/11/04 PHP
PHP微信API接口类
2016/08/22 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
2017/08/28 PHP
VBScript版代码高亮
2006/06/26 Javascript
createElement与createDocumentFragment的点点区别小结
2011/12/19 Javascript
node.js中的http.response.removeHeader方法使用说明
2014/12/14 Javascript
Javascript中的方法和匿名方法实例详解
2015/06/13 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
2016/07/12 Javascript
javascript正则表达式中分组详解
2016/07/17 Javascript
jQuery插件EasyUI设置datagrid的checkbox为禁用状态的方法
2016/08/05 Javascript
vue计算属性computed、事件、监听器watch的使用讲解
2019/01/21 Javascript
JS实现提示框跟随鼠标移动
2019/08/27 Javascript
Layui选项卡制作历史浏览记录的方法
2019/09/28 Javascript
js实现小球在页面规定的区域运动
2020/06/16 Javascript
[58:35]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.22
2019/09/05 DOTA
浅析Python中的join()方法的使用
2015/05/19 Python
Python实现简易版的Web服务器(推荐)
2018/01/29 Python
Tensorflow环境搭建的方法步骤
2018/02/07 Python
python 实现倒排索引的方法
2018/12/25 Python
Python后台开发Django的教程详解(启动)
2019/04/08 Python
Python3实现定时任务的四种方式
2019/06/03 Python
Python解析多帧dicom数据详解
2020/01/13 Python
Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)
2020/02/05 Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
2020/02/26 Python
纯CSS3实现图片无间断轮播效果
2016/08/25 HTML / CSS
伦敦著名的运动鞋综合商店:Footpatrol
2019/03/25 全球购物
高二美术教学反思
2014/01/14 职场文书
办公室文员工作职责
2014/01/31 职场文书
公司司机岗位职责范本
2014/03/03 职场文书
2014年元旦感言
2014/03/06 职场文书
大学应届生的自我评价
2014/03/06 职场文书
2014年党课学习材料
2014/05/11 职场文书
2014年幼儿园老师工作总结
2014/12/05 职场文书
如何用JavaScript检测当前浏览器是无头浏览器
2021/04/27 Javascript
MySQL基于索引的压力测试的实现
2021/11/07 MySQL