27.07.2012, 01:06
|
|
✔
|
|
Регистрация: 04.06.2012
Сообщений: 513
|
|
регулярки: замена ссылки на ютуб
Гулял по форуму в поисках примеров регулярных выражений и наткнулся на один пост от maxmaxmaximus-а (выкинул из его поста всё лишнее оставил саму задачу)
Сообщение от Mахmaxmaximus
|
потом напиши функцию чтобы она находила в тексте все такие ссылки на ютьюб, и заменяла их чисто айдишниками ютьюбовских видео.
|
Я сделал это так:
<div id="text" style="height: 50px"> </div>
<script>
var str = "http://youtube.com бла-бла-бла youtu.be/wUQfvbBRnZs бла-бла-бла http://www.youtube.com/watch?v=wUQfvbBRnZs http://youtu.be" ;
var poisk = /((?:http:\/\/)?(?:www\.)?youtube\.com\/watch\?v=(?=[-_0-9a-z]{11}))|((?:http:\/\/)?(?:www\.)?youtu\.be\/(?=[-_0-9a-z]{11}))/ig ;
var pat = str.replace(poisk, '') ;
window.onload = function() {
document.getElementById('text').innerHTML = pat ;
} ;
</script>
Не 'коряво' я это реализовал? Можно это сделать короче или нет
Последний раз редактировалось Hekumok, 28.07.2012 в 03:07.
|
|
27.07.2012, 01:28
|
Профессор
|
|
Регистрация: 31.05.2012
Сообщений: 396
|
|
Во-первых, в регулярке вы забыли закрыть скобку, во-вторых, флаг "m" там не нужен. Вместо (?=[%0-9a-z]+\b) можно просто (?=[%0-9a-z]), что не равносильно, но, мне кажется, то что вы хотели.
|
|
27.07.2012, 01:29
|
|
✔
|
|
Регистрация: 04.06.2012
Сообщений: 513
|
|
oneguy,
я уже сам увидел и исправил =) или где-то еще забыл?
m - да пох на него))
а если сделать как вы написали, то там будет смотреть только один знак после youtube.com/, а я сделал наверняка, чтоб просматривал все, но в принципе, канеш, можно и так =)
|
|
27.07.2012, 01:36
|
Профессор
|
|
Регистрация: 31.05.2012
Сообщений: 396
|
|
Сообщение от Hekumok
|
а если сделать как вы написали, то там будет смотреть только один знак после youtube.com/
|
В вашем варианте тоже, вы написали [%0-9a-z]+ - значит оно будет довольно даже одним знаком.
|
|
27.07.2012, 01:48
|
|
✔
|
|
Регистрация: 04.06.2012
Сообщений: 513
|
|
oneguy, ну в принципе да
|
|
27.07.2012, 09:17
|
|
✔
|
|
Регистрация: 04.06.2012
Сообщений: 513
|
|
Дзен-трансгуманист, спасибо, поправлю код =) но у меня, когда я вбил в гугле 'видео ютуб', были именно те 2 ссылки...без 'watch' и идентификатор не из 11символов почему-то...хотя, может, это и не идентификатор
__________
Всё исправил, теперь норм?
__________
И если всё правильно, поставьте мне какую-нить задачку с регулярками, если вам не сложно =)
Последний раз редактировалось Hekumok, 27.07.2012 в 10:12.
|
|
27.07.2012, 16:28
|
|
✔
|
|
Регистрация: 04.06.2012
Сообщений: 513
|
|
кто-нибудь может дать какую-нить задачку с регулярками или ссылку, где задачу(-и) можно посмотреть, но не слишком сложную, еси можна
|
|
27.07.2012, 19:09
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Hekumok,
А приведите пару-тройку входных строк и пару выходных для них же ?
Чот пока слабо вкурил
|
|
27.07.2012, 20:00
|
|
✔
|
|
Регистрация: 04.06.2012
Сообщений: 513
|
|
Deff,
<div id="text" style="height: 50px"> </div>
<script>
var str = "новый видос погляди : \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" ;
var poisk = /(?:(?:http:)?(?:\/\/)?(?:www\.)?youtube\.com\/watch\?\S*?v=([-_0-9a-z]{11})\S*)|(?:(?:http:)?(?:\/\/)?(?:www\.)?youtu\.be\/\S*?([-_0-9a-z]{11})\S*)/ig ;
var pat = str.replace(poisk, function(а, b, c) {return (b||c)}) ;
window.onload = function() {
document.getElementById('text').innerHTML = pat ;
} ;
</script>
ещё?
Последний раз редактировалось Hekumok, 28.07.2012 в 22:47.
|
|
27.07.2012, 21:21
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Hekumok,
Ясн!
|
|
|
|