JavaScript 假设文本框为a,能否通过
a.value.match(/[\u4E00-\u9FA5]/g)获得文本框内汉字的个数。
具体验证不能通过~  求助

解决方案 »

  1.   

    var cnLen = (a.value.match(/[\u4E00-\u9FA5]/g).length - 1) || 0;
      

  2.   

    window.onload = function() {
      var s = '大小,多少123 ab工工cd上下ef左右g!';  // method-1
      alert(s.length - s.replace(/[\u4e00-\u9faf]/g, '').length);  // method-2
      alert(s.match(/[\u4e00-\u9faf]/g).length);  // method-3
      var count = 0;
      s.replace(/[\u4e00-\u9faf]/g, function(a) {
          count++;
        });
      alert(count);  // method-4
      var count2 = 0;
      for(var i = 0; i < s.length; i++) {
        var k = s.charCodeAt(i);
        if(k >= 0x4e00 && k <= 0x9faf) {
          count2++;
        }
      }
      alert(count2);
    }
      

  3.   

    请问为什么是 (a.value.match(/[\u4E00-\u9FA5]/g).length - 1)呢,不应该直接是.length么 然而具体实现时,貌似不能正确的计算出汉字的个数来…… 
      

  4.   

    更正一下
    var cnLen = a.value.match(/[\u4E00-\u9FA5]/g).length;
      

  5.   

    把 method-2 再改一下,呵呵:  // method-2
      alert((s.match(/[\u4e00-\u9faf]/g) || '').length);
      

  6.   

    请教:这儿的变量s对于文本框来讲,能够直接用a.value。如果a是文本框名~ 
      

  7.   

    最好别这样取
    可以给元素加个id,用document.getElementById来取元素