为什么RegExp.test()不一致? [英] Why is RegExp.test() not consistent?

查看:182
本文介绍了为什么RegExp.test()不一致?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不明白为什么javascript RegExp.test()方法每次调用时都不会返回相同的结果。

I do not understand why the javascript RegExp.test() method do no return the same result every time I call it.

给出以下javascript变量

Given the following javascript variables

var opener = '<span[^>]*>';
var regexo = new RegExp('^'+opener+'$', "g");

我执行以下操作:

alert(regexo.test('<span class="outer">')); // true
alert(regexo.test('<span class="inner">')); // false
alert(regexo.test('<span class="inner">')); // true

我在Firefox 24.0和IE8中测试了它,结果相同。

I tested it in Firefox 24.0 and IE8 with the same strange result.

为什么结果 true,false,true 而不是 true,true,true

推荐答案

那是因为你使用 g 标志。它将regexp对象转换为迭代器,其状态随每次调用而变化。

That's because you use the g flag. It turns the regexp object into an iterator, whose state changes with each call.

您不需要 g 在这里标记,所以只需删除它:

You don't need the g flag here, so just remove it :

var regexo = new RegExp('^'+opener+'$');

这篇关于为什么RegExp.test()不一致?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆