2012-04-16 2 views
3

Если у меня есть два фрейма, как я могу сопоставить тот, у которого нет youtube src?Javascript regex match iframe 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> 

ответ

4

У вас есть все данные в одну строку, которая может содержать несколько тегов? В этом случае вам нужно: 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) 
1
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/

+0

Я хотел бы использовать регулярное выражение, чтобы я мог заменить iframe перед его отображением. –

+0

@FlorianShena Я не уверен, что понимаю, что вы имеете в виду? – qw3n

+0

У меня есть строка, содержащая html, на которой я использую regexp для удаления любых нежелательных данных, но я не могу понять, как удалить iframes, которые не являются видео YouTube. –