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 相关文章推荐
JavaScript 监听textarea中按键事件
Oct 08 Javascript
Jquery下判断Id是否存在的代码
Jan 06 Javascript
AngularJS教程之环境设置
Aug 16 Javascript
AngularJS实现一次监听多个值发生的变化
Aug 31 Javascript
[原创]JS基于FileSaver.js插件实现文件保存功能示例
Dec 08 Javascript
Bootstrap3 内联单选和多选框
Dec 29 Javascript
详解vue-cli本地环境API代理设置和解决跨域
Sep 05 Javascript
详解Vue.js Mixins 混入使用
Sep 15 Javascript
React.Js添加与删除onScroll事件的方法详解
Nov 03 Javascript
基于datepicker定义自己的angular时间组件的示例
Mar 14 Javascript
写给新手同学的vuex快速上手指北小结
Apr 14 Javascript
js观察者模式的弹幕案例
Nov 23 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中邮箱地址正则表达式实现与详解
2012/04/24 PHP
WordPress开发中用于标题显示的相关函数使用解析
2016/01/07 PHP
总结PHP中数值计算的注意事项
2016/08/14 PHP
FormValid0.5版本发布,带ajax自定义验证例子
2007/08/17 Javascript
JavaScript接口实现代码 (Interfaces In JavaScript)
2010/06/11 Javascript
js禁止小键盘输入数字功能代码
2011/08/01 Javascript
jquery不会自动回收xmlHttpRequest对象 导致了内存溢出
2012/06/18 Javascript
UpdatePanel和Jquery冲突的解决方法
2013/04/01 Javascript
如何实现textarea里的不同文本显示不同颜色
2014/01/20 Javascript
JavaScript使用cookie记录临时访客信息的方法
2015/04/07 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单的实现代码
2016/06/23 Javascript
Bootstrap3 图片(响应式图片&图片形状)
2017/01/04 Javascript
使用ionic播放轮询广告的实现方法(必看)
2017/04/24 Javascript
json对象及数组键值的深度大小写转换问题详解
2018/03/30 Javascript
vuex操作state对象的实例代码
2018/04/25 Javascript
Element UI 自定义正则表达式验证方法
2018/09/04 Javascript
浅谈webpack和webpack-cli模块源码分析
2020/01/19 Javascript
vue商城中商品“筛选器”功能的实现代码
2020/07/01 Javascript
[42:06]2019国际邀请赛全明星赛 8.23
2019/09/05 DOTA
Python中的对象,方法,类,实例,函数用法分析
2015/01/15 Python
Python 专题六 局部变量、全局变量global、导入模块变量
2017/03/20 Python
浅谈Django自定义模板标签template_tags的用处
2017/12/20 Python
python实现顺序表的简单代码
2018/09/28 Python
python3实现点餐系统
2019/01/24 Python
python中有帮助函数吗
2020/06/19 Python
MVMT手表官方网站:时尚又实惠的高品质手表
2016/12/04 全球购物
新西兰廉价汽车租赁:Snap Rentals
2018/09/14 全球购物
浅谈react路由传参的几种方式
2021/03/23 Javascript
绿化工程实施方案
2014/03/17 职场文书
公司财务经理岗位职责
2015/04/08 职场文书
审查起诉阶段律师意见书
2015/05/19 职场文书
2019西餐厅创业计划书范文!
2019/07/12 职场文书
慰问信(范文3篇)
2019/10/23 职场文书
导游词之西安骊山
2019/12/03 职场文书
Python基础 括号()[]{}的详解
2021/11/07 Python
Django基础CBV装饰器和中间件
2022/03/22 Python