<script type="text/javascript">
<!--
var re=new  RegExp(/^-?\d+$/g);
alert(re.test("22"));
alert(re.test("22"));
alert(re.test("22"));
alert(re.test("22"));
alert(re.test("22"));
//-->
</script>
为何
第一次返回  true 
第二次返回  false 
第三次返回  true 
第四次返回  false 
正则表达式

解决方案 »

  1.   


    var re=new  RegExp('^-?\\d+$');
    alert(re.test("22"));
    alert(re.test("22"));
    alert(re.test("22"));
    alert(re.test("22"));
    alert(re.test("22"));或者var re=/^-?\d+$/;
    alert(re.test("22"));
    alert(re.test("22"));
    alert(re.test("22"));
    alert(re.test("22"));
    alert(re.test("22"));不要g
      

  2.   

    js 正则表达式 有两种写法:一个是 正则表达式字面量方式reg=/^xxxxxxxxxxx$/img,另一种就是 利用 RegExp构造函数 var reg=new RegExp("普通字符串","img标识符").
      

  3.   

    主要是lastIndex在作怪,因为你加了g修正符,所以内部会有个属性即lastIndex保存上次匹配后,下次匹配的起始位置,发现到达串尾会有个重置操作,所以你的例子出现了true,false交叠的情况。
    要么不要g,要么自己置0.
      <script type="text/javascript">
    <!--
    var re=new  RegExp(/^-?\d+$/g);
    alert(re.test("22"));
    re.lastIndex = 0;
    alert(re.test("22"));
    re.lastIndex = 0;
    alert(re.test("22"));
    re.lastIndex = 0;
    alert(re.test("22"));
    re.lastIndex = 0;
    alert(re.test("22"));
    re.lastIndex = 0;
    //-->
    </script>