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 相关文章推荐
Jquery 一次处理多个ajax请求的代码
Sep 02 Javascript
css transform 3D幻灯片特效实现步骤解读
Mar 27 Javascript
jQuery(js)获取文字宽度(显示长度)示例代码
Dec 31 Javascript
javascript在当前窗口关闭前检测窗口是否关闭
Sep 29 Javascript
JS中创建函数的三种方式及区别
Mar 13 Javascript
javascript设计模式之模块模式学习笔记
Feb 15 Javascript
Vue学习笔记之表单输入控件绑定
Sep 05 Javascript
javascript显示动态时间的方法汇总
Jul 06 Javascript
使用RN Animated做一个“添加购物车”动画的方法
Sep 12 Javascript
node.js连接mysql与基本用法示例
Jan 05 Javascript
inquirer.js一个用户与命令行交互的工具详解
May 18 Javascript
Vue可自定义tab组件用法实例
Oct 24 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下MYSQL limit的优化
2008/01/10 PHP
逐步提升php框架的性能
2008/01/10 PHP
php cookie的操作实现代码(登录)
2010/12/29 PHP
mac下安装nginx和php
2013/11/04 PHP
php中的动态调用实例分析
2015/01/07 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
RSA实现JS前端加密与PHP后端解密功能示例
2019/08/05 PHP
js 自定义的联动下拉框
2010/02/07 Javascript
Jquery 的扩展方法总结
2011/10/01 Javascript
javascript简易缓动插件(源码打包)
2012/02/16 Javascript
javascript中HTMLDOM操作详解
2014/12/11 Javascript
浅谈JavaScript变量的自动转换和语句
2016/06/12 Javascript
jQuery仿IOS弹出框插件
2017/02/18 Javascript
vue使用axios时关于this的指向问题详解
2017/12/22 Javascript
微信小程序实现购物页面左右联动
2019/02/15 Javascript
微信小程序上传多图到服务器并获取返回的路径
2019/05/05 Javascript
vue 组件开发原理与实现方法详解
2019/11/29 Javascript
Python ZipFile模块详解
2013/11/01 Python
python实现的一个p2p文件传输实例
2014/06/04 Python
推荐11个实用Python库
2015/01/23 Python
Python Pandas对缺失值的处理方法
2019/09/27 Python
python pygame实现球球大作战
2019/11/25 Python
简单了解为什么python函数后有多个括号
2019/12/19 Python
Python如何定义接口和抽象类
2020/07/28 Python
详解pandas映射与数据转换
2021/01/22 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
完美解决IE8下不兼容rgba()的问题
2017/03/31 HTML / CSS
Gina Bacconi官网:吉娜贝康尼连衣裙和礼服
2018/04/24 全球购物
ASICS印度官方网站:日本专业运动品牌
2020/06/20 全球购物
旅游管理实习自我鉴定
2013/09/29 职场文书
三年级音乐教学反思
2014/01/28 职场文书
文案策划求职信
2014/03/18 职场文书
图书馆志愿者活动总结
2014/06/27 职场文书
小学生优秀评语
2014/12/29 职场文书
Python OpenCV 图像平移的实现示例
2021/06/04 Python
浅谈自定义校验注解ConstraintValidator
2021/06/30 Java/Android