相同的内容用同一正则测试两次返回的结果为:true,false,改下:    function isEnAndNum() {
        var obj1 = document.getElementById("thenameid");
        var obj2 = document.getElementById("thepwdid");
        if (/^[a-z\d]*$/gi.test(obj1.value) == true && /^[a-z\d]*$/gi.test(obj2.value) == true)
            return true;
        else {
            alert('用户名和密码都不要输入字母和数字以外的字符!');
            return false;
        }
    }

解决方案 »

  1.   

    如果正则表达式中包含了g选项则在第一次匹配后会记录下lastindex,第二次匹配时就出错。
    像此例中也可以通过取消g选项来达到目的。
      

  2.   

    function isEnAndNum()
    {
      var reg=/[^a-z\d]/i;
      var obj1 = document.getElementById("thenameid");
      var obj2 = document.getElementById("thepwdid");
      if (reg.test(obj1.value) || reg.test(obj2.value)) {
        alert('用户名和密码都不要输入字母和数字以外的字符!');
        return false;
      }
      return true;
    }
      

  3.   

    正则应该是var reg=/^[a-z0-9]+$/gi;
      

  4.   

    && 逻辑错误了,改为|| &&会让程序弄错:两个都是错误才出现警告