在Regex.test之后执行Regex.exec时出现意外行为

时间:2015-10-08 22:53:03

标签: javascript regex node.js

我想知道我遇到正则表达式的行为背后的原因。

这是节点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.exec()之后Regex.test()时,结果是第一次null。当我再次运行Regex.exec()时,我有预期的值。我错过了什么?

1 个答案:

答案 0 :(得分:3)

Regular Expressions have a lastIndex property表示从哪里开始搜索。每次拨打exectest,它都会推送此索引,下一个电话会从那里开始。