我需要匹配索引1中iframe src的url。我使用此matchAll函数来匹配多次出现。
if (typeof RegExp.prototype.matchAll !== "function") {
RegExp.prototype.matchAll = function(v) {
var tmp = ""+ this, // So this.toString
src = tmp.lastIndexOf("/"),
pattern = tmp.substring(1, src),
flags = tmp.substring(src + 1, tmp.length);
// Never forget "g", that prepends infinite loops for "while"
if (flags.indexOf("g") == -1) {
flags += "g";
}
var re = new RegExp(pattern, flags);
var ms = [], m;
while (m = re.exec(v)) {
ms.push(m);
}
return ms;
};
}
使用此测试代码:
str = '<iframe width="560" height="315" src="https://www.youtube.com/embed/8L-6Hw7CZLQ" frameborder="0" allowfullscreen></iframe>';
var pattern = /\[embed\](.*?)\[\/embed\]|<iframe.*?src="(.*?)".*?<\/iframe>/;
var matches = pattern.matchAll(str);
console.log(matches);
我确实得到了src,但是在索引2上,我需要它在索引1上,因为该模式实际上匹配使用索引1作为“url”的其他东西,所以我宁愿匹配该索引上的所有url修改整个代码。
在任何iframe的索引1上获取src网址的正确模式是什么?
答案 0 :(得分:0)
要使iframe网址和嵌入网址都显示在索引1上,请尝试以下代码:
var pattern = /(?:(?:<iframe.*?src=")|(?:\[embed\]))(.*?)(?:\"|(?=\[\/embed\]))/;
答案 1 :(得分:0)
这应该有效。它匹配iframe的src以及同一组(Group1)中的[embed][/embed]
。
var pattern = /(?:(?:\[embed\])|(?:<iframe.*?src="))(.*?)(?:(?:\[\/embed\])|(?:".*?<\/iframe>))/;