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 相关文章推荐
chrome浏览器当表单自动填充时如何去除浏览器自动添加的默认样式
Oct 09 Javascript
jQuery实现TAB选项卡切换特效简单演示
Mar 04 Javascript
node.js缺少mysql模块运行报错的解决方法
Nov 13 Javascript
原生js验证简洁注册登录页面
Dec 17 Javascript
vue2.0实现导航菜单切换效果
May 08 Javascript
Angular实现的日程表功能【可添加及隐藏显示内容】
Dec 27 Javascript
vue 2.1.3 实时显示当前时间,每秒更新的方法
Sep 16 Javascript
vue基础之事件简写、事件对象、冒泡、默认行为、键盘事件实例分析
Mar 11 Javascript
layui实现左侧菜单点击右侧内容区显示
Jul 26 Javascript
Vue props中Object和Array设置默认值操作
Jul 30 Javascript
封装Vue Element的table表格组件的示例详解
Aug 19 Javascript
js实现页面导航层级指示效果
Aug 25 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图片等比例缩放生成缩略图函数分享
2014/06/10 PHP
php+mysql不用递归实现的无限级分类实例(非递归)
2014/07/08 PHP
Codeigniter控制器controller继承问题实例分析
2016/01/19 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
2019/04/16 PHP
js弹出框轻量级插件jquery.boxy使用介绍
2013/01/15 Javascript
Js-$.extend扩展方法使方法参数更灵活
2013/01/15 Javascript
JSON+JavaScript处理JSON的简单例子
2013/03/20 Javascript
Javascript对象属性方法汇总
2013/11/21 Javascript
鼠标事件的screenY,pageY,clientY,layerY,offsetY属性详解
2015/03/12 Javascript
JavaScript从数组中删除指定值元素的方法
2015/03/18 Javascript
JS基于Ajax实现的网页Loading效果代码
2015/10/27 Javascript
Javascript实现的SHA-256加密算法完整实例
2016/02/02 Javascript
基于JS实现无缝滚动思路及代码分享
2016/06/07 Javascript
jQuery flip插件实现的翻牌效果示例【附demo源码下载】
2016/09/20 Javascript
D3.js实现散点图和气泡图的方法详解
2016/09/21 Javascript
js时间控件只显示年月
2017/01/08 Javascript
JavaScript函数参数的传递方式详解
2017/03/06 Javascript
JQuery Ajax执行跨域请求数据的解决方案
2018/12/10 jQuery
利用Webpack实现小程序多项目管理的方法
2019/02/25 Javascript
JS替换字符串中指定位置的字符(多种方法)
2020/05/28 Javascript
django_orm查询性能优化方法
2018/08/20 Python
Python2与Python3的区别实例分析
2019/04/11 Python
基于pandas中expand的作用详解
2019/12/17 Python
Django中的模型类设计及展示示例详解
2020/05/29 Python
经验丰富程序员才知道的8种高级Python技巧
2020/07/27 Python
利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)
2020/09/04 Python
pycharm 实现调试窗口恢复
2021/02/05 Python
CSS3的RGBA中关于整数和百分比值的转换
2015/08/04 HTML / CSS
英国豪华针织品牌John Smedley的在线销售商:The Outlet by John Smedley
2018/04/08 全球购物
如何设置Java的运行环境
2013/04/05 面试题
电子商务网站的创业计划书
2014/01/05 职场文书
清洁工表扬信
2014/01/08 职场文书
总经理任命书
2014/03/29 职场文书
退休教师追悼词
2015/06/23 职场文书
CSS+HTML 实现顶部导航栏功能
2021/08/30 HTML / CSS
Mac电脑OS系统下安装Nginx的详细教程
2022/04/14 Servers