Javascript 正则表达式匹配 iframe src

Javascript regex match iframe src

本文关键字:iframe src 正则表达式 Javascript      更新时间:2023-09-26

如果我有两个iframe,我如何匹配没有youtube src的那个?

<iframe  src="http://googleads.g.doubleclick.net/pagead/ads?client=ca-feed-pub"></iframe>
<iframe  src="http://www.youtube.com/embed/Y4MnpzG5Sqc?wmode=opaque"></iframe>

您将所有数据都放在一个字符串中,该字符串可能包含多个标签?在这种情况下,您需要 1) 在字符串中找到每个单独的 iframe,2) 检查每个找到的 iframe 是否需要删除它或保留它。下面是执行此操作的代码,并带有显示每个步骤执行位置的注释:

var string='<iframe  src="http://googleads.g.doubleclick.net/pagead/ads?client=ca-feed-pub"></iframe><iframe  src="http://www.youtube.com/embed/Y4MnpzG5Sqc?wmode=opaque"></iframe><iframe  src="http://googleads.g.doubleclick.net/pagead/ads?client=ca-feed-pub"></iframe><some_good_tag>TEST</some_good_tag><iframe  src="http://www.youtube.com/embed/Y4MnpzG5Sqc?wmode=opaque"></iframe>'
function filter_iframe(iframe_tag){
    // if iframe have youtube in it - return it back unchanged
    if(/src=".+youtube/.test(iframe_tag)){ return iframe_tag }
    // if not - replace it with empty string, effectively removing it
    return ''
}
// first, find each iframe in string and call function to check if you need to remove it
var filtered=string.replace(/(<iframe.*?>.*?<'/iframe>)/g, filter_iframe)
console.log(filtered)
var a='<iframe  src="http://googleads.g.doubleclick.net/pagead/ads?client=ca-feed-pub"></iframe><iframe  src="http://www.youtube.com/embed/Y4MnpzG5Sqc?wmode=opaque"></iframe><iframe  src="http://googleads.g.doubleclick.net/pagead/ads?client=ca-feed-pub"></iframe><iframe  src="http://www.youtube.com/"></iframe>'
var b=a.match(/(<iframe.+?<'/iframe>)/g),l=b.length,i=0;
for(i;i<l;i++){
  if(b[i].indexOf('youtube.com')>-1){a=a.replace(b[i],'')}
}​

http://jsfiddle.net/7ykXv/