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基础教程
Nov 20 Javascript
JS实现的表格行鼠标点击高亮效果代码
Nov 27 Javascript
轻松搞定js表单验证
Oct 13 Javascript
JavaScript实现类似拉勾网的鼠标移入移出效果
Oct 27 Javascript
基于Layer+jQuery的自定义弹框
May 26 Javascript
jQuery实现table表格信息的展开和缩小功能示例
Jul 21 jQuery
Angular刷新当前页面的实现方法
Nov 21 Javascript
jQuery实现为table表格动态添加或删除tr功能示例
Feb 19 jQuery
利用Promise自定义一个GET请求的函数示例代码
Mar 20 Javascript
js实现双人五子棋小游戏
May 28 Javascript
javascript利用canvas实现鼠标拖拽功能
Jul 23 Javascript
原生JavaScript实现换肤
Feb 19 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中函数内引用全局变量的方法
2008/10/20 PHP
PHP中通过加号合并数组的一个简单方法分享
2011/01/27 PHP
分享PHP函数实现数字与文字分页代码
2015/07/28 PHP
PHP下SSL加密解密、验证、签名方法(很简单)
2020/06/28 PHP
PHP实现向关联数组指定的Key之前插入元素的方法
2017/06/06 PHP
js弹出层永远居中实现思路及代码
2013/11/29 Javascript
node.js中的fs.fsyncSync方法使用说明
2014/12/15 Javascript
jQuery插件boxScroll实现图片轮播特效
2015/07/14 Javascript
浅谈JavaScript 中有关时间对象的方法
2016/08/15 Javascript
用vue封装插件并发布到npm的方法步骤
2017/10/18 Javascript
使用async-validator编写Form组件的方法
2018/01/10 Javascript
bootstrap datepicker的基本使用教程
2019/07/09 Javascript
JavaScript 面向对象基础简单示例
2019/10/02 Javascript
JavaScript鼠标悬停事件用法解析
2020/05/15 Javascript
[02:46]解说DC:感谢430陪伴我们的DOTA2国际邀请赛岁月
2016/06/29 DOTA
Python HTTP客户端自定义Cookie实现实例
2017/04/28 Python
Python字典及字典基本操作方法详解
2018/01/30 Python
Python遍历numpy数组的实例
2018/04/04 Python
浅谈Pandas Series 和 Numpy array中的相同点
2019/06/28 Python
python使用装饰器作日志处理的方法
2019/07/11 Python
python函数参数(必须参数、可变参数、关键字参数)
2019/08/16 Python
Python序列类型的打包和解包实例
2019/12/21 Python
基于Python数据结构之递归与回溯搜索
2020/02/26 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
2020/03/02 Python
Python能做什么
2020/06/02 Python
Linux管理员面试经常问道的相关命令
2013/04/29 面试题
怎么样写好简历中的自我评价
2013/10/25 职场文书
小学教育毕业生自荐信
2013/11/18 职场文书
2014年幼儿园教学工作总结
2014/12/04 职场文书
2014年纪委工作总结
2014/12/05 职场文书
繁星春水读书笔记
2015/06/30 职场文书
保护环境建议书作文300字
2015/09/14 职场文书
详解MySQL数据库千万级数据查询和存储
2021/05/18 MySQL
vue2实现provide inject传递响应式
2021/05/21 Vue.js
python生成可执行exe控制Microsip自动填写号码并拨打功能
2021/06/21 Python
Python测试框架pytest高阶用法全面详解
2022/06/01 Python