Reputation: 1434
If I have two iframes, how can I match the one that HAS NOT a 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>
Upvotes: 3
Views: 8223
Reputation: 22421
You have all your data in a single string, that may contain several tags? In that case you'll need to 1) find each separate iframe in string, 2) check each found iframe if you need to remove it or leave it alone. Here's the code that does just that with comments showing where each step is performed:
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)
Upvotes: 4
Reputation: 6334
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],'')}
}
Upvotes: 1