首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

正则表达式回来结果为何不同

2013-03-01 
正则表达式返回结果为何不同script typetext/javascript!--var renewRegExp(/^-?\d+$/g)alert(re.

正则表达式返回结果为何不同
<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来全文匹配了

热点排行