var reg=window.eval(strReg);
if(reg.test(tr.cells[nType].innerHTML))//第二次判断
alert("true");
else
alert("false");}
第二次判断判断前编译下
参考下面第3个 后面有解释
http://community.csdn.net/Expert/TopicView3.asp?id=5422907

解决方案 »

  1.   

    正则表达式执行的问题,正则表达式也有属性
    类似于全局变量,第一次执行完,有个lastIndex,这样继续从lastIndex执行下去,结果为false
    然后lastIndex=0,继续开始
      

  2.   

    确实如mingxuan3000(铭轩)和Clayborne(Clay)所说的那样,是lastIndex的问题.我在mingxuan3000(铭轩)的例子的基础上进行了一些修改进行了一下测试
    var bbb=/[a]{2,}/gi
    alert(bbb.test("aabbcc"))
    alert(bbb.lastIndex)
    //var bbb=/[a-z\u4e00-\u9fa5]{2,}/gi 
    alert(bbb.test("中中aa中中"))
    alert(bbb.lastIndex)
    //var bbb=/[a-z\u4e00-\u9fa5]{2,}/gi
    alert(bbb.test("aaa中daa"))
    alert(bbb.lastIndex)解决办法也找到了可以像mingxuan3000(铭轩)那样重新编译也可以直接设置lastIndex=0但我不知道这两种办法哪个效率高一些,而且其他浏览器是否允许.我在ie和firefox下测试没问题,经过修改后的程序运行符合预期.谢谢楼上各位的参与,明天早上结帖,放一会看看能不能起到抛砖引玉的效果得到更多大虾的指点,哈哈修改后的代码:
    <html>
    <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    </head>
    <body>
    <center>
    <script type="text/javascript">function Search(Tbl,TextValue)
    {
       var count=0;
       var nType=GetType();
       var keyWord=TextValue.value;
       var strReg="/^"+keyWord+".*?$/gi"
       var reg=window.eval(strReg);
       var tr;
       
       if(keyWord!=""){
         for(var i=0;i<Tbl.rows.length;i++){
            tr=Tbl.rows[i];
    reg.lastIndex=0;
    if(reg.test(tr.cells[nType].innerHTML)){
              tr.style.display="block";
              count++;
            }
    else{
              tr.style.display="none";
            }
         }
       }
       
       if(count==0){
         alert('找不到你要的记录!');
         ListAll(Tbl);
       }
    }function ListAll(Tbl){
      for(var i=0;i<Tbl.rows.length;i++){
        Tbl.rows[i].style.display="block";
      }
    }function GetType(){
    var oInputs=document.getElementsByTagName("input");
    for(var i=0;i<oInputs.length;i++)
    if(oInputs[i].type=='radio' && oInputs[i].checked)
    return oInputs[i].value;
    }
    </script><input id="ttt" type="text" style="width:200" >
    <input type="button" value="查找" onClick="Search(Tbl1,ttt)" >
    <input type="button" value="返回" onClick="ListAll(Tbl1)">
    <input name="paytype" type="radio" value="0" checked >
    文字
    <input type="radio" name="paytype" value="1" >
    数字
    <input type="radio" name="paytype" value="2" >
    日期
    <br>
    <table width="500" id="Tbl1" border="1">
    <tr><td>aaa</td><td>12</td><td>1988</td></tr>
    <tr><td>呵呵</td><td>56</td><td>1911</td></tr>
    <tr><td>ccc</td><td>55</td><td>1920</td></tr>
    <tr><td>ddd</td>
    <td>12a</td><td>1953</td></tr>
    <tr><td>呵呵</td><td>55</td><td>1877</td></tr>
    <tr><td>ddeed</td>
    <td>12345</td><td>1983</td></tr>
    <tr><td>ddafd</td><td>58</td><td>1988</td></tr>
    </table>
    </center>
    </body>
    </html>
      

  3.   

    重复使用的用于test的正则可以考虑不加"g"
      

  4.   

    我测试了一下不加g确实可以,谢谢zhaoxiaoyang(梅雪香@深圳)