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 相关文章推荐
给ListBox添加双击事件示例代码
Dec 02 Javascript
HTML页面登录时的JS验证方法
May 28 Javascript
jQuery中:radio选择器用法实例
Jan 03 Javascript
JS处理json日期格式化问题
Oct 01 Javascript
jquery实现的点击翻书效果代码
Nov 04 Javascript
JS获取短信验证码倒计时的实现代码
May 22 Javascript
vue页面使用阿里oss上传功能的实例(二)
Aug 09 Javascript
详解vue-router传参的两种方式
Sep 10 Javascript
JS实现简易留言板特效
Dec 23 Javascript
vue利用全局导航守卫作登录后跳转到未登录前指定页面的实例代码
May 19 Javascript
vue下载二进制流图片操作
Oct 26 Javascript
微信小程序将页面按钮悬浮固定在底部的实现代码
Oct 29 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
如何将一个表单同时提交到两个地方处理
2006/10/09 PHP
解决phpmyadmin 乱码,支持gb2312和utf-8
2006/11/20 PHP
jq的get传参数在utf-8中乱码问题的解决php版
2008/07/23 PHP
php随机取mysql记录方法小结
2014/12/27 PHP
PHP实现简单搜歌的方法
2015/07/28 PHP
php获取当前url地址的方法小结
2017/01/10 PHP
[IE&FireFox兼容]JS对select操作
2007/01/07 Javascript
保证JavaScript和Asp、Php等后端程序间传值编码统一
2009/04/17 Javascript
javascript开发随笔二 动态加载js和文件
2011/11/25 Javascript
jQuery侧边栏随窗口滚动实现方法
2013/03/04 Javascript
jquery跨域请求示例分享(jquery发送ajax请求)
2014/03/25 Javascript
JS+CSS实现表格高亮的方法
2015/08/05 Javascript
编写高性能Javascript代码的N条建议
2015/10/12 Javascript
js点击按钮实现带遮罩层的弹出视频效果
2015/12/19 Javascript
vue2.0 中#$emit,$on的使用详解
2017/06/07 Javascript
利用Jasmine对Angular进行单元测试的方法详解
2017/06/12 Javascript
浅谈vue中关于checkbox数据绑定v-model指令的个人理解
2018/11/14 Javascript
koa2服务端使用jwt进行鉴权及路由权限分发的流程分析
2019/07/22 Javascript
vue简单练习 桌面时钟的实现代码实例
2019/09/19 Javascript
浅谈Three.js截图并下载的大坑
2019/11/01 Javascript
微信小程序监听用户登录事件的实现方法
2019/11/11 Javascript
Python2包含中文报错的解决方法
2018/07/09 Python
Python面向对象之接口、抽象类与多态详解
2018/08/27 Python
使用11行Python代码盗取了室友的U盘内容
2018/10/23 Python
django rest framework 过滤时间操作
2020/07/12 Python
在Python3.74+PyCharm2020.1 x64中安装使用Kivy的详细教程
2020/08/07 Python
python super()函数的基本使用
2020/09/10 Python
如何在vscode中安装python库的方法步骤
2021/01/06 Python
英国豪华针织品牌John Smedley的在线销售商:The Outlet by John Smedley
2018/04/08 全球购物
离婚协议书怎么写的
2014/12/14 职场文书
三八红旗手事迹材料
2014/12/26 职场文书
重阳节慰问信
2015/02/15 职场文书
总经理检讨书范文
2015/02/16 职场文书
让生命充满爱观后感
2015/06/08 职场文书
2016年学校党支部公开承诺书
2016/03/25 职场文书
导游词之上海杜莎夫人蜡像馆
2019/11/22 职场文书