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 concat数组累加 示例
Sep 03 Javascript
jQuery动态显示和隐藏datagrid中的某一列的方法
Dec 11 Javascript
js将控件隐藏及display属性的使用介绍
Dec 30 Javascript
Javascript基础教程之JavaScript语法
Jan 18 Javascript
JavaScript针对网页节点的增删改查用法实例
Feb 02 Javascript
深入解析jQuery中Deferred的deferred.promise()方法
May 03 Javascript
AngularJS ng-controller 指令简单实例
Aug 01 Javascript
Bootstrap基本插件学习笔记之折叠(22)
Dec 08 Javascript
走进javascript——不起眼的基础,值和分号
Feb 24 Javascript
JS判断微信扫码的方法
Aug 07 Javascript
jQuery.Sumoselect插件实现下拉复选框效果
Nov 09 jQuery
vue 计算属性和侦听器的使用小结
Jan 25 Vue.js
一个简单的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购物车模块功能分析(函数讲解,附源码)
2013/06/25 PHP
无刷新动态加载数据 滚动条加载适合评论等页面
2013/10/16 PHP
php操作mysqli(示例代码)
2013/10/28 PHP
php发送get、post请求的6种方法简明总结
2014/07/08 PHP
PHP表单数据写入MySQL数据库的代码
2016/05/31 PHP
Yii实现文章列表置顶功能示例
2016/10/18 PHP
在laravel中实现事务回滚的方法
2019/10/10 PHP
PHP实现页面静态化深入讲解
2021/03/04 PHP
表单(FORM)的一些实用效果代码
2007/03/25 Javascript
主页面中的两个iframe实现鼠标拖动改变其大小
2013/04/16 Javascript
javascript使用正则表达式检测IP地址
2014/12/03 Javascript
JS表单验证的代码(常用)
2016/04/08 Javascript
微信公众平台开发教程(五)详解自定义菜单
2016/12/02 Javascript
Node.js中process模块常用的属性和方法
2016/12/13 Javascript
BootStrap表单时间选择器详解
2017/05/09 Javascript
JS 音频可视化插件Wavesurfer.js的使用教程
2018/10/31 Javascript
微信小程序实现文件预览
2020/10/22 Javascript
vant自定义二级菜单操作
2020/11/02 Javascript
[42:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS OpTic
2018/03/31 DOTA
Python中用format函数格式化字符串的用法
2015/04/08 Python
python使用mailbox打印电子邮件的方法
2015/04/30 Python
Python fileinput模块使用实例
2015/06/03 Python
Python3.6正式版新特性预览
2016/12/15 Python
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
2018/01/23 Python
python利用高阶函数实现剪枝函数
2018/03/20 Python
numpy中实现ndarray数组返回符合特定条件的索引方法
2018/04/17 Python
Python3实现配置文件差异对比脚本
2019/11/18 Python
使用 Supervisor 监控 Python3 进程方式
2019/12/05 Python
利用Python制作动态排名图的实现代码
2020/04/09 Python
keras 模型参数,模型保存,中间结果输出操作
2020/07/06 Python
Selenium环境变量配置(火狐浏览器)及验证实现
2020/12/07 Python
css3实现的下拉菜单效果示例
2014/01/22 HTML / CSS
大学社团计划书
2014/05/01 职场文书
安全教育主题班会总结
2015/08/14 职场文书
公司管理建议书
2015/09/14 职场文书
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
2021/05/18 Vue.js