到exec
一個單一的通話將只返回第一比賽,甚至與g
標誌。但正則表達式將包含狀態,使用相同的正則表達式後續多次調用exec
將返回以下匹配項。
從MDN exec
documentation:
返回的數組具有匹配的文本作爲第一個項目,然後對匹配含有被捕獲
[文本中的每個捕獲括號一項.. 。]
如果您的正則表達式使用「g」標誌,則可以多次使用exec方法在同一個字符串中查找連續的匹配項。
所以這個代碼將從您的例子alert
的前兩場比賽:
var content = '<p>[dfp:advertisement:leaderboard:750x90]</p>text here<p>[dfp:advertisement:box1:300x250]</p>';
var regX = /([a-zA-Z0-9]*):([0-9]*x[0-9]*)/g;
var match = regX.exec(content);
var match2 = regX.exec(content);
alert(match[0]);
alert(match2[0]);
正如其他人已經提到的,你可以改用match
上的繩子與多個匹配返回數組。
所以,類似上面的代碼,這個代碼將alert
的前兩場比賽,從你的例子:
var content = '<p>[dfp:advertisement:leaderboard:750x90]</p>text here<p>[dfp:advertisement:box1:300x250]</p>';
var regX = /([a-zA-Z0-9]*):([0-9]*x[0-9]*)/g;
var match = content.match(regX);
alert(match[0]);
alert(match[1]);
你有多個'第二次:單曲 – 11684