He tomado el Liberal URL Regex from Daring Fireball, lo he fusionado con some of Alan Storm improvements y he pirateado mi camino para solucionar algunos errores, como el soporte para caracteres IDN entre paréntesis. Esto es lo que tengo:Ayuda Hacking Gruber's Liberal URL Regex
/(?:[\w-]+:\/\/?|www[.])[^\s()<>]+(?:(?:\([^\s()<>]*\)[^\s()<>]*)+|[^[:punct:]\s]|\/)/
Sin embargo, me he encontrado un error que no estoy siendo capaz de resolver:
'www.dsd(sd)sdsd.com' // can also be the valid 'www.dsd.com/whatever(whatever)'
La URL anterior está siendo reconocido como www.dsd(sd)sdsd.com'
(o www.dsd.com/whatever(whatever)'
) en lugar de www.dsd(sd)sdsd.com
(o www.dsd.com/whatever(whatever)
). Esto sólo parece ocurrir cuando la URL tiene paréntesis, ya que la siguiente URL:
'www.sampleurl.com'
correctamente está siendo reconocido como www.sampleurl.com
.
creo no está siendo ejecutada la parte [^[:punct:]\s]|\/
de la expresión regular cuando la URL tiene paréntesis, he estado tratando durante algún tiempo, pero me parece que no puede encontrar una solución. ¿Alguien puede ayudarme?
Para los productos básicos, he creado un Rubular permalink with the regex and some test data (la última URL falla).
creo que la expresión regular de Gruber fue un poco apresurado, por ejemplo, que no coincide con la URL como:
http://en.wikipedia.org/wiki/Something_(Special)_For_You
estoy aún más impresionado al ver que tanto Gruber y Alan perdidas esto realmente simple error tipográfico:
\([\w\d]+\)
¿no sería \(\w+\)
será suficiente? : S
tampoco parece trabajar (http://www.rubular.com/regexes/12851). –
Hm, cierto. Probé usando la expresión original de Daring Fireball (que uso yo mismo). No soy un experto en expresiones regulares, por lo que espera de cualquier otra solución, me quite mejoras de Alan Storm (porque creo que son inútiles/innecesaria) –
La expresión Daring Fireball única partidos 0-9a-Z entre paréntesis. –