Cita:
Iniciado por ryugen De acuerdo a lo dicho, sin conocer tanto del tema, armaría la siguiente expresión regular:
Código Javascript
:
Ver originalmagnet\:\?xt=urn\:\w+\:\w+(\&dn=[\w|\.|\-\_]+)?
Se la puede ver en funcionamiento acá (casos positivos y casos negativos):
Regex Tester Cita:
Iniciado por emprear @Adbane
Te diría que el formato de un magnet puede ser un poco más amplio que lo que señalas, por lo que habría que buscar una expresión más generíca
http://es.wikipedia.org/wiki/Magnet
SAludos
Hola a los dos, perdonad que no contestara antes, estuve todo el día sin internet.
A lo que ibamos. Estuve trabajando un poco y dí con una expresión regular algo engorrosa y rebuscada pero que en un principio me sirve para magnets sencillos. Pero claro, como comenta
emprear, los magnets tienen formatos mucho más amplios, entre ellos hay magnets que incluyen enlaces http, lo cual hace que entre en conflicto con mi otra línea que utilizo para enlaces normales, haciendo que se mezclen magnets con url creando varios <a href>.
Código Javascript
:
Ver original$('p').each(function(){
var str = $(this).html();
$(this).empty();
str = ' '+str;
str = str.replace(/((ftp|https?):\/\/([-\w\.]+)+(:\d+)?(\/([-\w/_\.]*(\?\S+)?)?)?)/gm,'<a href="$1">$1</a>');
str = str.replace(/(magnet:\?xt=urn:btih:(([\w\^\&\^;\%\=\-\.\:\/\/]*(\?\S+)?)?)?)/i,'<a href="$1">$1</a>');
str = str.replace(/([^[a-zA-Z0-9áéíóúÁÉÍÓÚüÜñÑ])\#([a-zA-Z0-9áéíóúÁÉÍÓÚüÜñÑ]+)/gm,'$1<a href="%23$2">#$2</a>');
$(this).append(str);
});
Normalmente el error me lo da con magnets como este:
magnet:?xt=urn:btih:0bbfaaf5f469a2bd3d762f6942a302 f7014a35e9&tr.1=udp://tracker.ccc.de:80&tr.2=http://announce.torrentsmd.com:6969/announce&tr.3=http://announce.torrentsmd.com:8080/announce.php&tr.4=http://bttrack.9you.com/:8080/announce&tr.5=http://announce.torrentsmd.com:8080/announce&tr.6=http://bitflip.uni.cx:6969/announce&kt=http://www.bt2magnet.com
El problema ocurre cuando el each() llega hasta el primer "http", ahí termina el magnet y me genera un replace() para enlaces normales. La única solución que veo es hacerlo todo en una sola expresión regular, tanto enlaces http, como magnets, y ya de paso aquellos que empiecen por www.
Iré estudiandome un poco más a fondo las distintas estructuras que tiene un magnet, a ver si se me ocurre alguna idea...