Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.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正则表达式在后续调用中返回null_Javascript_Regex - Fatal编程技术网

与全局标志一起使用时,Javascript正则表达式在后续调用中返回null

与全局标志一起使用时,Javascript正则表达式在后续调用中返回null,javascript,regex,Javascript,Regex,可能重复: 我有一个正则表达式,我正在这样使用 new_regex = /^[+-]?(\d+).*\s+(\d+).*\s+([\d\.]+)/g >> /^[+-]?(\d+).*\s+(\d+).*\s+([\d\.]+)/g myregex = new RegExp(new_regex) >> /^[+-]?(\d+).*\s+(\d+).*\s+([\d\.]+)/g subject = "+39° 44' 39.28\"" >> "+

可能重复:

我有一个正则表达式,我正在这样使用

new_regex = /^[+-]?(\d+).*\s+(\d+).*\s+([\d\.]+)/g

>>  /^[+-]?(\d+).*\s+(\d+).*\s+([\d\.]+)/g

myregex = new RegExp(new_regex)

>> /^[+-]?(\d+).*\s+(\d+).*\s+([\d\.]+)/g

subject = "+39° 44' 39.28\""
>>  "+39° 44' 39.28""
我每隔一次执行以下操作时,上述操作均有效:

myregex.exec(subject)
>> ["+39° 44' 39.28", "39", "44", "39.28"]
第二次执行时,它给出null

 myregex.exec(subject)
 >> null

是的,
.exec
就是这样处理全局标志的。如果您将同一主题传递给它,它将前进到下一个匹配项,直到找不到匹配项并返回
null

var str = "1111",
    re = /1/g;


re.exec(str); //["1"]
re.exec(str); //["1"]
re.exec(str); //["1"]
re.exec(str); //["1"]
re.exec(str) // null
在再次执行
之前,您可以通过更改主题来重置它:

re.exec("") //Will reset it.
重置示例:

var str = "1111",
    re = /1/g;

re.exec(str); //["1"]
re.exec(str); //["1"]
re.exec(""); //Reset
re.exec(str); //["1"]
re.exec(str); //["1"]
re.exec(str); //["1"]
re.exec(str); //["1"]
re.exec(str) // null

是的,
.exec
就是这样处理全局标志的。如果您将同一主题传递给它,它将前进到下一个匹配项,直到找不到匹配项并返回
null

var str = "1111",
    re = /1/g;


re.exec(str); //["1"]
re.exec(str); //["1"]
re.exec(str); //["1"]
re.exec(str); //["1"]
re.exec(str) // null
在再次执行
之前,您可以通过更改主题来重置它:

re.exec("") //Will reset it.
重置示例:

var str = "1111",
    re = /1/g;

re.exec(str); //["1"]
re.exec(str); //["1"]
re.exec(""); //Reset
re.exec(str); //["1"]
re.exec(str); //["1"]
re.exec(str); //["1"]
re.exec(str); //["1"]
re.exec(str) // null

这就回答了您的问题@PhilParsons在回答中没有提到是正则表达式中的
g
标志导致了这种
.exec
行为。就在我写这篇文章的时候,阿普西勒一家发布了很多信息better@Esailija没有,但问题是“为什么Javascript中带有全局标志的RegExp会给出错误的结果?”这回答了您的问题@PhilParsons。答案中没有提到是regex中的
g
标志导致了这种
.exec
行为。就在我写这篇文章的时候,阿普西勒一家发布了很多信息better@Esailija没有,但问题是“为什么Javascript中带有全局标志的RegExp会给出错误的结果?”非常精确的解释。我明白了。这是非常精确的解释。我明白了。再来一次