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 相关文章推荐
IE8 原生JSON支持
Apr 13 Javascript
写给想学习Javascript的朋友一点学习经验小结
Nov 23 Javascript
javascript仿php的print_r函数输出json数据
Sep 13 Javascript
js中的referrer返回上一页使用介绍
Sep 26 Javascript
jQuery时间插件jquery.clock.js用法实例(5个示例)
Jan 14 Javascript
JS中from 表单序列化提交的代码
Jan 20 Javascript
JavaScript实现前端实时搜索功能
Mar 26 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
Aug 06 Javascript
微信小程序使用modal组件弹出对话框功能示例
Nov 29 Javascript
新手入门带你学习JavaScript引擎运行原理
Jun 24 Javascript
vue实现简单全选和反选功能
Sep 15 Javascript
JavaScript构造函数原理及实现流程解析
Nov 19 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
天使彦史上最神还原,性别曝光的那一刻,百万网友恋爱了
2020/03/02 国漫
简单的PHP缓存设计实现代码
2011/09/30 PHP
使用php判断浏览器的类型和语言的函数代码
2013/02/28 PHP
教你如何快捷的使用cmd访问mysql小技巧
2014/05/26 PHP
了解PHP的返回引用和局部静态变量
2015/06/04 PHP
php面向对象与面向过程两种方法给图片添加文字水印
2015/08/26 PHP
PHP实现简易图形计算器
2020/08/28 PHP
List Information About the Binary Files Used by an Application
2007/06/18 Javascript
js下用eval生成JSON对象
2010/09/17 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
2014/12/31 Javascript
JavaScript 浏览器对象模型BOM使用介绍
2015/04/13 Javascript
JQuery实现简单的图片滑动切换特效
2015/11/22 Javascript
jQuery 1.9.1源码分析系列(十五)动画处理之缓动动画核心Tween
2015/12/03 Javascript
jQuery实现的导航动画效果(附demo源码)
2016/04/01 Javascript
AngularJS入门教程之路由与多视图详解
2016/08/19 Javascript
JS实现重新加载当前页面或者父页面的几种方法
2016/11/30 Javascript
详解vue-Resource(与后端数据交互)
2017/01/16 Javascript
nodejs服务搭建教程 nodejs访问本地站点文件
2017/04/07 NodeJs
移动设备手势事件库Touch.js使用详解
2017/08/18 Javascript
基于canvasJS在PHP中制作动态图表
2020/05/30 Javascript
JavaScript中交换值的10种方法总结
2020/08/18 Javascript
Vue和React有哪些区别
2020/09/12 Javascript
[02:41]2015国际邀请赛中国区预选赛观战指南
2015/05/20 DOTA
Python 命令行参数sys.argv
2008/09/06 Python
六个窍门助你提高Python运行效率
2015/06/09 Python
Spring实战之使用util:命名空间简化配置操作示例
2019/12/09 Python
HTML5各种头部meta标签的功能(推荐)
2017/03/13 HTML / CSS
英国精品买手店:Browns Fashion
2016/09/29 全球购物
党的群众路线教育实践活动心得体会(企业)
2014/11/03 职场文书
优秀团支部申报材料
2014/12/26 职场文书
第28个世界无烟日活动总结
2015/02/10 职场文书
公务员年度考核个人总结
2015/02/12 职场文书
详解CSS故障艺术
2021/05/25 HTML / CSS
TensorFlow的自动求导原理分析
2021/05/26 Python
HTML基础详解(上)
2021/10/16 HTML / CSS
Flutter Navigator 实现路由传递参数
2022/04/22 Java/Android