在 javascript 中匹配索引 1 上的 iframe src
Matching iframe src on index 1 in javascript
我需要匹配索引 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" 的其他东西,所以我宁愿匹配所有 urls 在该索引上,而不是修改整个代码。
在任何 iframe 的索引 1 上获取 src url 的正确模式是什么?
要使 iframe url 和嵌入 url 都出现在索引 1 上。请尝试以下代码:
var pattern = /(?:(?:<iframe.*?src=")|(?:\[embed\]))(.*?)(?:\"|(?=\[\/embed\]))/;
这应该有效。它匹配 iframe 的 src 和同一组 (Group1) 中的 [embed][/embed]
之间。
var pattern = /(?:(?:\[embed\])|(?:<iframe.*?src="))(.*?)(?:(?:\[\/embed\])|(?:".*?<\/iframe>))/;
我需要匹配索引 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" 的其他东西,所以我宁愿匹配所有 urls 在该索引上,而不是修改整个代码。
在任何 iframe 的索引 1 上获取 src url 的正确模式是什么?
要使 iframe url 和嵌入 url 都出现在索引 1 上。请尝试以下代码:
var pattern = /(?:(?:<iframe.*?src=")|(?:\[embed\]))(.*?)(?:\"|(?=\[\/embed\]))/;
这应该有效。它匹配 iframe 的 src 和同一组 (Group1) 中的 [embed][/embed]
之间。
var pattern = /(?:(?:\[embed\])|(?:<iframe.*?src="))(.*?)(?:(?:\[\/embed\])|(?:".*?<\/iframe>))/;