Voici LA RegExp magique : https?:\/\/[^\s<"]+
.
L'astuce réside dans le fait qu'il ne peut pas avoir d'espace dans une URL. L'expression ci-dessus va donc rechercher tous les caractères et s'arrêtera lorsqu'elle tombera sur un « espace blanc », c'est-à-dire un espace, un retour chariot, une tabulation, un saut de ligne ou un saut de page. Il ne peut pas avoir non plus ni de double quote ("), ni de signe inférieur, qui signifie l'ouverture d'une balise HTML.
Exemples d'utilisations
JavaScript
text = text.replace(/(https?:\/\/[^\s<"]+)/g, '< href="$1">$1</a>');
PHP
$text = preg_match('/(https?:\/\/[^\s<"]+)/g', '<a href="$1">$1</a>', $text);
Perl
$text =~ s#(https?:\/\/[^\s<"]+)#<a href="$1">$1</a>#g;
Python
import re
text = re.sub('(https?:\/\/[^\s<"]+)', r'<a href="\1">\1</a>', text)
Historique
- 2015-05-11 : amélioration de la RegExp tel que
https?:\/\/[^\s<"]+
. - 2015-05-10 : ajout des codes JavaScript, Perl et Python.