我想知道我遇到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
属性,指示从哪里开始搜索。每次调用exec
或test
,它都会推进该索引,下一次调用将从那里开始。