Estoy intentando integrar el An Improved Liberal, Accurate Regex Pattern for Matching URLs de John Gruber en uno de mis JavaScript, pero el inspector de WebKit (en Google Chrome 5.0.375.125 para Mac) da un error de sintaxis de expresión regular de "grupo inválido". expreg originales¿Cómo soluciono el error de "grupo no válido" cuando trato de usar el patrón de expresiones regulares de URL mejoradas de Gruber en JavaScript?
de Gruber es el siguiente:
(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))
La línea de mi JavaScript w/la expresión regular es el siguiente (w/barras diagonales escapados):
tweet_text = tweet_text.replace(/(?i)\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/gi, '<a href="$1">$1</a>');
Y el Google cromo (? V8) error es como sigue:
Uncaught SyntaxError: Invalid regular expression: /(?i)\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/: Invalid group
Y el error Safari es el siguiente:
SyntaxError: Invalid regular expression: unrecognized character after (?
Afirma que debería funcionar en los modernos intérpretes de expresiones regulares de JavaScript, que Me asumir WebKit & V8 sería. ¿La sintaxis de expresiones regulares de JavaScript no es compatible con la sintaxis de agrupación (?:
(maldito Google para no indexar la puntuación)? ¿Extrañaba escapar algo?
gracias, necesitaba esto para mi propio proyecto! –
¡Me alegro de que haya sido útil! – morgant
Tengo problemas para encontrar "example.com". 'http://example.com' y 'www.example.com' funcionan. ¿Tienes alguna idea? –