由于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以及大写的部分字母和中文的宽度是一致的,这个函数的正则还有相当大的改进空间,同时也可以指定截字的起始位置。
相关推荐:
3步搞定纯真IP数据导入到MySQL的方法详解
JavaScript 利用StringBuffer类提升+=拼接字符串效率
ASP GetRef 函数指针试探
Python 流程控制实例代码
javascript 面向对象,实现namespace,class,继承,重载
jQuery 白痴级入门教程
Win2003 Server 安全的个人Web服务器
Ha0k 0.3 PHP 网页木马修改版
Mootools 1.2教程 类(一)
Asp.net 菜单控件简洁版
Python+Django在windows下的开发环境配置图解
Jquery中增加参数与Json转换代码
JavaScript 组件之旅(三):用 Ant 构建组件
jquery (show,fadeOut,Animate)简单效果
CSS 渐变背景的6个演示代码
js 数组实现一个类似ruby的迭代器
简单的加密css地址防止别人下载你的CSS文件的方法
Js文字背景行如流水特效
MSSQL 首字母替换成大写字母
php 读取mysql数据库三种方法
开发人员一定要加入收藏夹的网站 推荐
SQLids.vbs 0.7(最终版,以后改成gui界面的)
VBS操作Excel常见方法
phpmailer 中文使用说明(简易版)
CSS+Js遮罩效果的TAB及焦点图片切换(推荐)
MSSQL 提取汉字实现语句
Oracle 中文字段进行排序的sql语句
IIS 配置过程及解决方案 学习小结
iisapp.vbs iis pid了解对应的网站或应用池
点击按钮后 文本框变为Select下拉列表框
学习ExtJS border布局
php面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
js url传值中文乱码之解决之道
JavaScript 监听textarea中按键事件
php+javascript的日历控件
Flex 实现可以拖动的毛玻璃效果
MySQL 转义字符使用说明
JavaScript 函数式编程的原理
ASP.NET 调用百度搜索引擎的代码
php 将excel导入mysql
Mootools 1.2教程 定时器和哈希简介
SQLServer 数据修复命令DBCC一览
Tab页界面,用jQuery及Ajax技术实现
C# 面向对象的基本原则
C# 获取程序集版本、文件版本
PHP 简单日历实现代码
支持IE,Firefox的javascript 日历控件
理解JavaScript变量作用域更轻松
js 操作符实例代码
Jquery 获取表单text,areatext,radio,checkbox,select值的代码