var box=/box/ig;alert(box.exec("this is bbox"));alert(box.test("boxes"));
刚接触正则不明白为什么,alert(box.test("boxes"));放在后面返回值是false,放在前面是true;求解答

解决方案 »

  1.   

    如果,你把alert(box.exec("this is bbox"));
    这里面的this is bbox   换成boxes试试回有什么效果?
      

  2.   

    var box=/box/ig;
    alert(box.exec("this is bboxs sdasbox"));
    box=/box/ig;
    alert(box.test("boxes"));如果在当中重新定义一下,就会没有问题,感觉应该是box的正则表达式在第一个alert之后,有变化,但水平较低,找不到原因,期待大神解答~~
      

  3.   

    alert(box.test("boxes"));放在后面返回值是false,放在前面是true
    是什么意思啊
    test的用法是reg.test(str)
    点前边的是对应的正则表达式,后边是要测试的字符串
    写反了意义就完全不一样了  返回结果也很可能不一样了啊
      

  4.   

    他是说,把两个alert的位置调换,就会有不同的效果~
      

  5.   

    因为你一个是exec 一个是test 当然不一样了
      

  6.   

    要么重新编译正则,要么把g去掉,要么置正则表达式的lastIndex为0,以下三种方案随一,建议第一种:var box=/box/ig;alert(box.exec("this is bbox"));
    box.compile();
    alert(box.test("boxes"));var box=/box/i;alert(box.exec("this is bbox"));
    alert(box.test("boxes"));var box=/box/ig;alert(box.exec("this is bbox"));
    //alert(box.lastIndex);
    box.lastIndex=0;
    alert(box.test("boxes"));
      

  7.   

    var box=/box/ig;alert(box.exec("this is bbox"));
    box.lastIndex = 0;
    alert(box.test("boxes"));
      

  8.   

    多谢,事实上就是这么回事,当exec检索到匹配的正则后,指针会停留在该匹配位置的后面,所以test方法检索不到了,可以手动设置index,只有当exec检索后返回值为null的时候,lastindex会自动重置为0.