当与全局标志一起使用时,Javascript Regex在后续调用中返回null



可能重复:
javascript字符串exec奇怪行为

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

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"]

第二次执行时,为空

 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

您可以通过再次更改execing之前的主题来重置它:

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

最新更新