执行Regex时的意外行为.在Regex.test之后执行



我想知道我遇到Regex的行为背后的原因。

这是节点REPL中的复制。

> const BRACKET_ENDING = /[)}]]/g;
undefined
> char = ']'
']'
> BRACKET_ENDING.test(char)
true
> BRACKET_ENDING.exec(char)
null
> BRACKET_ENDING.exec(char)
[ ']', index: 0, input: ']' ]

当我在Regex.test()之后执行Regex.exec()时,第一次得到的结果是null。当我再次运行Regex.exec()时,我又得到了期望值。我错过了什么?

正则表达式有一个lastIndex属性,指示从哪里开始搜索。每次调用exectest,它都会推进该索引,下一次调用将从那里开始。

最新更新