<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="js中用正则表达式计算中文长度的例子" id="card1">
<p> 游客</p><p>
标题:js中用正则表达式计算中文长度的例子<br/>
正文:<br/>
由于javascript是unicode编码的,所有的字符对于它来说一个就是一个，但是后台程序不是，通常在后台程序中一个中文是占两个字节的，这就导致了前后端校验长度不一致，这个问题可以通过正则来解决。<br/>代码如下:<br/>function getRealLen( str ) {<br/>    return str.replace(/[^\x00-\xff]/g, '__').length; //这个把所有双字节的都给匹配进去了<br/>}<br/>附赠另一小则技巧：有时候为了美观，不影响布局和界面，会以一些文案进行截字，但是中文的宽度和英文的宽度不一样，如果按照英文标准来截中文的，或者按中文标准截英文的，显然会忽长忽短，特别是昵称这类容易既有中文又有英文的东西，同样我们可以用上面的思路<br/>代码如下:<br/>function beautySub( str, len) {<br/>       var reg = /[\u4e00-\u9fa5]/g,    //专业匹配中文<br/>           slice = str.substring(0,len),<br/>           realen = len - ( ~~( slice.match(reg) &amp;amp;&amp;amp; slice.match(reg).length ) );<br/>           return slice.substring(0, realen ? realen : 1);<br/>}<br/>这里我们认为一个中文字符是两个英文字符的宽度，如果你是完美主义者，应该想到j和w,m的宽度是不一样的，w和m以及大写的部分字母和中文的宽度是一致的，这个函数的正则还有相当大的改进空间，同时也可以指定截字的起始位置。<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1172&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1172&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1172&amp;Page=1">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=1172">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=1172">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>