Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 28.07.2012, 09:26
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Hekumok
а зачем в обоих ваших кодах (в конце кодов) \w заключать в квадратные скобки,
а хз... видимо с просто уже не соображал ничего вчера в это время.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #22 (permalink)  
Старый 28.07.2012, 12:43
Аватар для Hekumok
Отправить личное сообщение для Hekumok Посмотреть профиль Найти все сообщения от Hekumok
 
Регистрация: 04.06.2012
Сообщений: 513

devote, ясно а вы не знаете, где можно посмотреть какие-нить задачки с регулярками? Или сами какую-нибудь мне подкиньте потренироваться просто хочу с ними...
Ответить с цитированием
  #23 (permalink)  
Старый 28.07.2012, 21:22
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

я бы сделал так :

(рега очень корявая долго мучися с "мусором". вроде бы ловит все варианты)

var reg = new RegExp(

    // ссылка начинается с протокола и с www, или с "//", или с ничего :). 
    "(?:" +
        "(?:" +
            "\\/\\/" + // я чуть про них не забыл :) 
        ")|(?:" +
            "(?:http:\\/\\/)?" +  // необязательны
            "(?:www\\.)?" +    
        ")" + 
    ")" +

    // дальше домен
    "(?:" +
        // у нас 2 варианта - короткий и полный. можно сделать через "|"
        "(?:" + 
            "youtube\\.com\\/watch\\?" + // полный вид ссылки на видео
            "(?:.+?&)?" + // "v" может быть не первым - порядок параметров неважен
            "v=" + // параметр, определяющий ИД видео 
        ")|(?:" +
            "youtu\\.be\\/" +  // теперь короткий вариант
        ")" +
    ")" +

    // после этого идёт ИД видоса.
    "([a-z0-9-]+)" + 

    // после ИДа - мусор
    "[^\\s\\n\\t]+",

    // текст мультистрочен, ссылки не имеют регистра, ищём всё 
    "img"
);

var text =  "новый видос погляди : \n\n полный вид ссылки : http://www.youtube.com/watch?v=y-Q49kLd7EA \n без протокола : www.youtube.com/watch?v=y-Q49kLd7EA \n без www : youtube.com/watch?v=y-Q49kLd7EA \n с двумя слешами : //youtube.com/watch?v=y-Q49kLd7EA \n параметр ИД не первый : youtube.com/watch?feature=relmfu&v=y-Q49kLd7EA \n короткий вид ссылки : youtu.be/y-Q49kLd7EA \n ссылки с мусором : youtube.com/watch?v=y-Q49kLd7EA&feauture=youtu.be \n youtube.com/watch?v=y-Q49kLd7EA#t=5s \n ссылка с верхним регистром : YOUTUBE.COM/WATCH?V=Y-Q49KLD7EA";

alert( text )
alert( text.replace(reg, "$1") );


Deff :
var str = ["полный вид ссылки : http://www.youtube.com/watch?v=y-Q49kLd7EA ", " без протокола : www.youtube.com/watch?v=y-Q49kLd7EA ", " без www : youtube.com/watch?v=y-Q49kLd7EA ", " с двумя слешами : //youtube.com/watch?v=y-Q49kLd7EA ", " параметр ИД не первый : youtube.com/watch?feature=relmfu&v=y-Q49kLd7EA ", " короткий вид ссылки : youtu.be/y-Q49kLd7EA ", " ссылка с мусором : youtube.com/watch?v=y-Q49kLd7EA&feauture=youtu.be ", "ссылка с мусором : youtube.com/watch?v=y-Q49kLd7EA#t=5s ", " ссылка с верхним регистром : YOUTUBE.COM/WATCH?V=Y-Q49KLD7EA"]

function ReturnYoutubId(str) {

    var Mass ="http://youtu.be/,www.youtube.com/watch?v=";

    Mass = Mass.split(",");//alert(Mass);

    var Out = "";

    for(var i=0; i<Mass.length; i++){

        var reg =  new RegExp(".*?"+Mass[i].replace(/\?/ig,'\\?')+"(\\S*?\\S(?=\\s|$))","ig");

        var st2 = str.replace(reg,',$1');

        if(st2!= str){Out+=st2;str=str.replace(st2,'');}

    } return Out.substring(1).split(",");;
}
for(var i=0; i<str.length; i++){
  alert(ReturnYoutubId(str[i]))
}


devote :
var a = ["полный вид ссылки : http://www.youtube.com/watch?v=y-Q49kLd7EA ", " без протокола : www.youtube.com/watch?v=y-Q49kLd7EA ", " без www : youtube.com/watch?v=y-Q49kLd7EA ", " с двумя слешами : //youtube.com/watch?v=y-Q49kLd7EA ", " параметр ИД не первый : youtube.com/watch?feature=relmfu&v=y-Q49kLd7EA ", " короткий вид ссылки : youtu.be/y-Q49kLd7EA ", " ссылка с мусором : youtube.com/watch?v=y-Q49kLd7EA&feauture=youtu.be ", "ссылка с мусором : youtube.com/watch?v=y-Q49kLd7EA#t=5s ", " ссылка с верхним регистром : YOUTUBE.COM/WATCH?V=Y-Q49KLD7EA"]

for( var i = 0; i < a.length; i++ ) {
    alert( a[i].replace( /(?:(?:https?:\/\/)?.*?\.(?:ru|com)\/(?:watch\?v=)?([\w]*)|(.*))/gi, "$1" ) );
}

Последний раз редактировалось melky, 28.07.2012 в 21:29.
Ответить с цитированием
  #24 (permalink)  
Старый 28.07.2012, 21:33
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

melky,
ну я собственно и не старался, я понятия не имею какие там ссылки бывают на ютубе. Ну а если бы задался решением, решил бы без проблем.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #25 (permalink)  
Старый 28.07.2012, 21:36
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от devote
ну я собственно и не старался, я понятия не имею какие там ссылки бывают на ютубе. Ну а если бы задался решением, решил бы без проблем.
я ещё специально ID новый подобрал, с тире жаль.
Ответить с цитированием
  #26 (permalink)  
Старый 28.07.2012, 21:38
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от melky
жаль.
жаль что не задавался вопросом? melky, я не фанатею от составления регулярок, знаю их давно еще до изучения JS. И как бы интерес был тогда когда их не знал, сейчас не тащусь от того что бы такое на них слепить.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #27 (permalink)  
Старый 28.07.2012, 21:57
Аватар для Hekumok
Отправить личное сообщение для Hekumok Посмотреть профиль Найти все сообщения от Hekumok
 
Регистрация: 04.06.2012
Сообщений: 513

melky, супер щас постараюсь свою доделать, чтоб тож все эти ссылки парсила...у мну ток ссылки с мусором не ловит...и, ксать, никогда не видел, чтоб ссылка с двух слешей // начиналась О.о
Ответить с цитированием
  #28 (permalink)  
Старый 28.07.2012, 22:35
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от devote
жаль что не задавался вопросом? melky, я не фанатею от составления регулярок, знаю их давно еще до изучения JS. И как бы интерес был тогда когда их не знал, сейчас не тащусь от того что бы такое на них слепить.
я тоже от них раньше не фанател, до того момента, как не увидел способ их описания, как у меня в примере - т.е. комментируя их по частям. от этого сразу интерес возрос, на время правда, иметь дело я с ними более-менее серьёзно начал в JS, отчего завидую Вам.

Сообщение от Hekumok
никогда не видел, чтоб ссылка с двух слешей // начиналась О.о
таки я тоже, но при составлении реги я на всякий это учитывал.

Сообщение от Hekumok
melky, супер щас постараюсь свою доделать, чтоб тож все эти ссылки парсила...у мну ток ссылки с мусором не ловит
я проблему с мусором решал дольше, чем саму регу составлял )
Ответить с цитированием
  #29 (permalink)  
Старый 28.07.2012, 22:51
Аватар для Hekumok
Отправить личное сообщение для Hekumok Посмотреть профиль Найти все сообщения от Hekumok
 
Регистрация: 04.06.2012
Сообщений: 513

урааааааа! Я сделал это! См. пост #10
Проблему с двойным слешем и где id не первый решил легко, а вот с мусором, как и вы, помучался...блин, я там чё тока не пробовал!)))
Ответить с цитированием
  #30 (permalink)  
Старый 28.07.2012, 23:10
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Hekumok,
В методев с массивом регеспов, - чем хорошо - не нужно мучацо- измудряцо - воткнул варианты ссылок - если нужно - дополнил по ходу...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Необходимо скрыть ссылки, кроме ведущих на изображения Keksman jQuery 4 04.03.2012 20:17
overflow:auto и #-ссылки vania-pooh (X)HTML/CSS 3 02.01.2011 21:16
Регулярное выражение, замена ссылки к файлу на имя файла libinstyle Events/DOM/Window 2 19.07.2010 17:50
ссылки получали стиль "visited" только на время сессии alexandr_poskrobka Серверные языки и технологии 7 10.03.2010 08:48
ССЫЛКИ (Помогите новичку) meggen (X)HTML/CSS 8 30.11.2009 10:51