即使带有标志,一次调用exec
也只会返回第一个匹配项。g
但是正则表达式将包含状态,以便后续多次调用exec
使用相同的正则表达式将返回以下匹配项。
从 MDNexec
文档:
返回的数组将匹配的文本作为第一项,然后每个匹配的捕获括号都有一个项目,其中包含捕获的文本
[ ... ]
如果您的正则表达式使用“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]);