在js里面字符串里如果用length属性的话1个汉字的长度是1吧
但是现在我想把数据输入到数据库里,我就想按按1个汉字的长度为2计算.
 我想了个办法:js的正则表达式里的[u4e00-u9fa5]是所有汉字的集合吧.
             下面我用一个函数将字符串里面每个汉字全部用英文"aa"代替.
              这样我就能按每个汉字2个字符长度计算了.
   但是结果恰好相反.输出的长度按每个英文字母长度为2计算- -!
想破脑袋也想不出为什么..
有空的帮我看看...
代码如下
  function getStringLength(str) {
return str.replace(/[u4e00-u9fa5]/g, "aa").length;
    }function checkUserName() {
var strLength = getStringLength("你好啊"); 
        alert(strLength);  //输出结果是3
                            
                            //如果把"你好啊"改成英文,如"abc".输出结果就是6了.问题就出在这里
                            //不明白为什么英文字母的长度变成2了,刚好和我所要的相反.              ……
}
}

解决方案 »

  1.   

    晕死.变色失败.
    中间那句是alert(strLength)  //输出结果是3
      

  2.   

    匹配的表达式不对:
    [u4e00-u9fa5] 改为==> [\u4E00-\u9FA5]
      

  3.   

    测试通过,正则表达式要加上单引号:
    <script type="text/javascript">
    function test(name) {
    var len=name.replace('[\u4E00-\u9FA5]/g' ,"aa").length;
    window.alert(len);
    }
    </script>
      

  4.   

    这样是错误的
    replace(/[\u4E00-\u6FA5]/g,"aa").length;