我想知道我遇到正则表达式的行为背后的原因。
这是节点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()
时,我有预期的值。我错过了什么?
答案 0 :(得分:3)
Regular Expressions have a lastIndex
property表示从哪里开始搜索。每次拨打exec
或test
,它都会推送此索引,下一个电话会从那里开始。