我快到了!只是无法弄清楚我需要的最后一部分......形成阵列。
我想浏览一个html文件并从短语 playVideo('和')
之间提取网址出于测试目的,我只是试图让它在变量str上工作,最终它将被html文档替换:
<script type="text/javascript">
var str ="playVideo('url1') BREAK playVideo('url2') BREAK playVideo('url3')";
var testRE = str.match("playVideo\\(\'(.*?)\'");
alert(testRE[1]);
</script>
这将输出'url1',但如果我将其更改为alert(testRE [2]),则它是未定义的。如何让它用所有URL填充数组(例如testRE [2]输出'url2'等)?
感谢任何帮助,对正则表达式不熟悉。
答案 0 :(得分:3)
无法发表评论,为什么会这样,但通过迭代正则表达式来添加你可以访问这些组;
var str ="playVideo('url1') BREAK playVideo('url2') BREAK playVideo('url3')";
var re = /playVideo\('(.*?)'\)/g;
while (match = re.exec(str)) {
alert(match[1]);
}
答案 1 :(得分:2)
通常,javascript正则表达式只会执行第一个匹配。更新正则表达式以添加g
修饰符。不幸的是,JavaScript正则表达式没有非捕获组,因此您必须进行更多处理才能提取所需的位。例如
<script type="text/javascript">
var str ="playVideo('url1') BREAK playVideo('url2') BREAK playVideo('url3')";
var testRE = str.match(/playVideo\(\'[^']*\'/g);
var urls = [];
for (var i = 0; i < testRE.length; i++)
{
urls[i] = testRE[i].substring(11).match(/[^']*/);
}
alert(urls[1]);
alert(urls[2]);
</script>