Expression régulière pour les urls

Fermé
scriptiz Messages postés 1420 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 mai 2013 - Modifié par scriptiz le 29/05/2011 à 20:07
Bonjour,

Voilà j'aimerais (en JavaScript) remplacer toutes les urls par des liens <a href=...>...</a>

Donc j'ai une epxression régulière pour capter les liens :
var replacePattern1 = /(\b(https?):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim; 
var replacedText = inputText.replace(replacePattern1, '<a href="$1" target="_blank">$1</a>');


Seulement le problème c'est que si une url est déjà dans un lien il la capte quand même.

Du coup j'aimerais changer l'expression régulière pour lui dire de ne pas traiter les liens s'il ya un '>' devant le http (donc quand l'url est déjà dans une balise <a href=...>...</a>).

J'ai essayé ceci :
var replacePattern1 = /^[^>](\b(https?):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim; 
var replacedText = inputText.replace(replacePattern1, '<a href="$1" target="_blank">$1</a>');


Du coup il ne traite plus les url qui sont déjà dans un lien <a> mais par contre il ne traite plus non plus les url qui ne sont pas sous forme de lien <a> :'(

Avez-vous une idée de comment faire une expression régulière qui fasse ce que je souhaite?

Merci d'avance :)





"The most successful method of programming is to begin a program as simply as possible, test it, and then add to the program until it performs the required job." -- PDP8 handbook, Pg 9-64