Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Regex.test之后执行Regex.exec时出现意外行为_Javascript_Regex_Node.js - Fatal编程技术网

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

Javascript 在Regex.test之后执行Regex.exec时出现意外行为,javascript,regex,node.js,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: ']' ] 当我在Rege

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

这是节点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()
时,返回了预期值。我遗漏了什么?

指示从何处开始搜索。每次调用
exec
test
,都会推进此索引,下一次调用将从那里开始。

指示从何处开始搜索。每次调用
exec
test
,都会推进此索引,下一次调用将从那里开始。

指示从何处开始搜索。每次调用
exec
test
,都会推进此索引,下一次调用将从那里开始。

指示从何处开始搜索。每次调用
exec
test
,它都会推进此索引,下一次调用将从那里开始。

在这种情况下,由于
test
匹配整个输入,因此没有剩余的
exec
可匹配,因此
exec
失败,但也会重置
lastIndex
,因此,当您再次执行
exec
时,它现在可以匹配。当
g
标志不存在时,
lastIndex
属性在每次搜索后保持为0。在我的例子中,我不得不停止使用不必要的
g
标志使其工作。在这种情况下,由于
test
匹配整个输入,因此没有剩余的内容可供
exec
匹配,因此
exec
失败,但也会重置
lastIndex
,因此当您再次执行
exec
时,现在它可以匹配了。当
g
标志不存在时,
lastIndex
属性在每次搜索后保持为0。在我的例子中,我不得不停止使用不必要的
g
标志使其工作。在这种情况下,由于
test
匹配整个输入,因此没有剩余的内容可供
exec
匹配,因此
exec
失败,但也会重置
lastIndex
,因此当您再次执行
exec
时,现在它可以匹配了。当
g
标志不存在时,
lastIndex
属性在每次搜索后保持为0。在我的例子中,我不得不停止使用不必要的
g
标志使其工作。在这种情况下,由于
test
匹配整个输入,因此没有剩余的内容可供
exec
匹配,因此
exec
失败,但也会重置
lastIndex
,因此当您再次执行
exec
时,现在它可以匹配了。当
g
标志不存在时,
lastIndex
属性在每次搜索后保持为0。在我的例子中,我不得不停止使用不必要的
g
标志来使它工作。