正则表达式中的JavaScript test()保存状态?

Gre*_*rek 13 javascript regex

打开浏览器控制台并执行以下代码:

var foo = /foo/g;
Run Code Online (Sandbox Code Playgroud)

然后,

foo.test("foo") // true
Run Code Online (Sandbox Code Playgroud)

然后,

foo.test("foo") // false
Run Code Online (Sandbox Code Playgroud)

如果继续执行foo.test("foo"),您将看到交替的真/假响应,就好像var foo实际被修改一样.

任何人都知道为什么会这样吗?

the*_*tem 15

是的,这就是正则表达式是全局的时候.test().exec()工作方式g.他们从最后一场比赛结束开始.

您可以使用该.lastIndex属性观察正则表达式对象上的当前最后一个索引.

它是一个可写属性,因此您可以0在需要时将其重置为.运行正则表达式而未找到匹配项时,它会自动重置为0.


归档时间:

查看次数:

628 次

最近记录:

13 年,3 月 前