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 相关文章推荐
js显示时间 js显示最后修改时间
Jan 02 Javascript
当鼠标滑过文本框自动选中输入框内容的JS代码分享
Nov 26 Javascript
jQuery图片切换插件jquery.cycle.js使用示例
Jun 16 Javascript
Javascript学习笔记之 对象篇(三) : hasOwnProperty
Jun 24 Javascript
Reactjs实现通用分页组件的实例代码
Jan 19 Javascript
vue.js数据绑定操作详解
Apr 23 Javascript
详解vue axios用post提交的数据格式
Aug 07 Javascript
jQuery 获取除某指定对象外的其他对象 ( :not() 与.not())
Oct 10 jQuery
Vue的生命周期操作示例
Sep 17 Javascript
使用node.JS中的url模块解析URL信息
Feb 06 Javascript
node.js +mongdb实现登录功能
Jun 18 Javascript
JS字符串和数组如何实现相互转化
Jul 02 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
德生S2000收音机更换“钕铁硼”全频扬声器
2021/03/02 无线电
php 伪造HTTP_REFERER页面URL来源的三种方法
2016/09/22 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
基于swoole实现多人聊天室
2018/06/14 PHP
Packer 3.0 JS压缩及混淆工具 下载
2007/05/03 Javascript
jQuery 可以拖动的div实现代码 脚本之家修正版
2009/06/26 Javascript
jQuery学习笔记(3)--用jquery(插件)实现多选项卡功能
2013/04/08 Javascript
JavaScript设计模式之单件模式介绍
2014/12/28 Javascript
javascript框架设计之种子模块
2015/06/23 Javascript
jQuery实现新消息在网页标题闪烁提示
2015/06/23 Javascript
JavaScript每天定时更换皮肤样式的方法
2015/07/01 Javascript
使用jquery实现仿百度自动补全特效
2015/07/23 Javascript
javascript显示上周、上个月日期的处理方法
2016/02/03 Javascript
Vue组件实例间的直接访问实现代码
2017/08/20 Javascript
JavaScript实现焦点进入文本框内关闭输入法的核心代码
2017/09/20 Javascript
Vue核心概念Getter的使用方法
2019/01/18 Javascript
基于Taro的微信小程序模板消息-获取formId功能模块封装实践
2019/07/15 Javascript
JavaScript实现Tab选项卡切换
2020/02/13 Javascript
vue 重塑数组之修改数组指定index的值操作
2020/08/09 Javascript
[00:35]DOTA2上海特级锦标赛 EG战队宣传片
2016/03/04 DOTA
[01:23]2019完美世界全国高校联赛(春季赛)合肥全国总决赛
2019/06/10 DOTA
简单文件操作python 修改文件指定行的方法
2013/05/15 Python
Python实现批量更换指定目录下文件扩展名的方法
2016/09/19 Python
Python 读取图片文件为矩阵和保存矩阵为图片的方法
2018/04/27 Python
Python实现聊天机器人的示例代码
2018/07/09 Python
详解Python匿名函数(lambda函数)
2019/04/19 Python
python图片二值化提高识别率代码实例
2019/08/24 Python
Python figure参数及subplot子图绘制代码
2020/04/18 Python
Python利用pip安装tar.gz格式的离线资源包
2020/09/14 Python
努比亚手机官网:nubia
2016/10/06 全球购物
交通工程专业推荐信
2014/09/06 职场文书
诉讼授权委托书
2014/10/15 职场文书
教师考核鉴定意见
2015/06/05 职场文书
OpenCV3.3+Python3.6实现图片高斯模糊
2021/05/18 Python
html5表单的required属性使用
2021/07/07 HTML / CSS
一行Python命令实现批量加水印
2022/04/07 Python