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.