1

可能重复:
javascript string 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"]

当我第二次执行它时,它给出了 null

 myregex.exec(subject)
 >> null
4

1 回答 1

4

是的,这就是.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
于 2012-07-30T18:29:52.237 回答