2010-03-11 2 views
0

Мне нужно получить все экземпляры http://someurl/somefile.flv в HTML-файле. Расширение не должно быть чувствительным к регистру.Регулярное выражение для поиска URL (заканчивается на FLV/flv)

настоящее время я использую следующий простой регулярное выражение, которое я использую в Javascript:

var rePattern = new RegExp(
    "(http://.*.flv)", 
    "gi" 
); 

Он имеет это недостатки, хотя, особенно если есть URL и где-то дальше в файле у вас есть что-то, упоминая FLV.

Я нашел различные регулярные выражения, которые проверяют URL-адреса и т. Д., Но я не могу их правильно изменить, чтобы просто искать ссылки FLV.

ответ

0

Если бы я делал это, мое регулярное выражение будет выглядеть примерно так:

http:\/\/(.+)\.(.+)\.flv 

Я спасся свои специальные символы, как вы должны делать. В частности, две черты и период перед «flv». Ваше регулярное выражение будет неправильно соответствовать «http://123flv», которое, я уверен, вы не хотите. Моей версии также требуется домен верхнего уровня, например example.com. Ваш бы соответствовал http://example/x.flv, который явно не является допустимым URL. Также обратите внимание, как я использую + вместо *, чтобы обеспечить наличие одного или нескольких символов.

Надеюсь, это поможет.
-tjw

+0

'HTTP: // Пример/х. flv'. – Anurag

+0

есть способ заставить обнаруживать .flv. как пример, он неправильно создает файл FLV в http://www.youtube.com/watch?v=-8SJTDyIZjM соответствует совпадениям: http://www.youtube.com/get_video?video_id=-8SJTDyIZjM&t=vjVQa1PpcFPIwBLpAL6uZSMvGDTwFnd9L__AQoEBQpA=&fmt=18 "class =" yt-button yt-button-urg лор»стиль = "ширина: 100px"> Скачать (MP4) Скачать (3GP) Скачать (FLV – Chris

+0

жаль, что: [код] http://www.youtube.com/get_video?video_id=-8SJTDyIZjM&t=vjVQa1PpcFPIwBLpAL6uZSMvGDTwFnd9L__AQoEBQpA = & fmt = 18 "class =" yt-button yt-button-emergency "style =" width: 100px "> Загрузить (MP4) Загрузить (3GP) Загрузить (FLV [/ code] – Chris

0

Http: // [^ \ "\» <> {} \ s] {6255} (< = .flv?)

+0

не согласен с этим? Насколько я могу читать, он соответствует http: //, тогда он соответствует не-url-weird символам, которые появляются от 6 до 255 (max в url) раз, тогда есть вихрь (wtf is? <=), Тогда .flv , Но я тестировал его, и если я помещаю менее 6 символов в основную часть URL-адреса, он также работает. – Marcelo

+0

@MarceloRamires (? <= - выражение для внешнего вида, чтобы убедиться, что шаблон закончился .flv. более эффективный, чем элемент стиля (. *)?, потому что это происходит, когда оценивается предыдущее выражение. «Если я помещаю менее 6 символов ...» Вы не считаете .flv-часть. Сделайте это большим числом. –

+0

Я получаю эту ошибку: SyntaxError: Недопустимое регулярное выражение: /http://[^"'<>{}s]{6,255}(?<=.flv)/: Неверная группа Использование: var rePattern = new RegExp ("HTTP: \/\/[^ \"?. \ '<> {} \ s] {6255} (<= FLV)», "ГИ"); – Chris

1
/http:\/\/[\S]+?\.flv/g 

document.body.innerHTML.match(/http:\/\/[\S]+?\.flv/g) 
Смежные вопросы