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 相关文章推荐
JQuery 自定义CircleAnimation,Animate方法学习笔记
Jul 10 Javascript
在服务端(Page.Write)调用自定义的JS方法详解
Aug 09 Javascript
JavaScript格式化日期时间的方法和自定义格式化函数示例
Apr 04 Javascript
php结合imgareaselect实现图片裁剪
Jul 05 Javascript
自己动手写的jquery分页控件(非常简单实用)
Oct 28 Javascript
javaScript事件机制兼容【详细整理】
Jul 23 Javascript
js实现点击图片自动提交action的简单方法
Oct 16 Javascript
jQuery实现可兼容IE6的淡入淡出效果告警提示功能示例
Sep 20 jQuery
Vue刷新修改页面中数据的方法
Sep 16 Javascript
vue实现多个元素或多个组件之间动画效果
Sep 25 Javascript
bootstrap-table实现表头固定以及列固定的方法示例
Mar 07 Javascript
vue3.0中的双向数据绑定方法及优缺点
Aug 01 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
基于mysql的bbs设计(四)
2006/10/09 PHP
discuz论坛 用户登录 后台程序代码
2008/11/27 PHP
二进制交叉权限微型php类分享
2014/02/07 PHP
CI框架中$this->load->library()用法分析
2016/05/18 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
2016/11/22 PHP
innerHTML,outerHTML,innerTEXT三者之间的区别
2007/01/28 Javascript
HTML页面如何象ASP一样接受参数
2007/02/07 Javascript
Jquery写一个鼠标拖动效果实现原理与代码
2012/12/24 Javascript
div失去焦点事件实现思路
2014/04/22 Javascript
使用js复制链接中的部分文字的方法
2015/07/30 Javascript
Chrome不支持showModalDialog模态对话框和无法返回returnValue问题的解决方法
2016/10/30 Javascript
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
2017/07/27 Javascript
react native与webview通信的示例代码
2017/09/25 Javascript
浅谈webpack组织模块的原理
2018/03/10 Javascript
微信小程序页面间值传递的两种方法
2018/11/26 Javascript
vue实现todolist功能、todolist组件拆分及todolist的删除功能
2019/04/11 Javascript
详解利用nodejs对本地json文件进行增删改查
2019/09/20 NodeJs
vue总线机制(bus)知识点详解
2020/05/10 Javascript
python实现DNS正向查询、反向查询的例子
2014/04/25 Python
Python中使用PIL库实现图片高斯模糊实例
2015/02/08 Python
python判断字符串是否是json格式方法分享
2017/11/07 Python
python通过伪装头部数据抵抗反爬虫的实例
2018/05/07 Python
Django 多语言教程的实现(i18n)
2018/07/07 Python
Python学习笔记之pandas索引列、过滤、分组、求和功能示例
2019/06/03 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
2019/09/18 Python
Python Web静态服务器非堵塞模式实现方法示例
2019/11/21 Python
Python通用唯一标识符uuid模块使用案例
2020/09/10 Python
详解Html5中video标签那些属性和方法
2019/07/01 HTML / CSS
努比亚手机官网:nubia
2016/10/06 全球购物
乌克兰排名第一的在线旅游超市:Farvater.Travel
2020/01/02 全球购物
资产经营总监岗位职责范文
2013/12/01 职场文书
开工仪式策划方案
2014/05/23 职场文书
2014幼儿园班主任工作总结
2014/12/04 职场文书
优秀党员主要事迹材料
2015/11/04 职场文书
修辞手法有哪些?
2019/08/29 职场文书
Python+Selenium实现抖音、快手、B站、小红书、微视、百度好看视频、西瓜视频、微信视频号、搜狐视频、一点号、大风号、趣头条等短视频自动发布
2022/04/13 Python