正则表达式返回结果为何不同
<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
。。。。。。。。。。。。。。。。
正则表达式
------解决方案--------------------
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
------解决方案--------------------js 正则表达式 有两种写法:一个是 正则表达式字面量方式reg=/^xxxxxxxxxxx$/img,另一种就是 利用 RegExp构造函数 var reg=new RegExp("普通字符串","img标识符").
------解决方案--------------------主要是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>
------解决方案--------------------你既然用了 ^$ ,那就是在格式验证了,所以就不要用g来全文匹配了