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

2回目に実行すると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 に答える