2011-08-12 2 views
3

J'utilise:Comment créer des liens d'URL à partir de chaînes

var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; 
return text.replace(exp,"<a href='$1' target='internet'>$1</a>"); 

à son tour, par exemple http://www.example.com en lien cliquable. Cela fonctionne bien!

Est-ce que quelqu'un sait comment développer cette expression pour capturer également www.example.com (c'est-à-dire sans http://)?

+0

Commencez par le début. Qu'essayez-vous de faire? –

+0

@Ash: Il semble vouloir convertir les balises 'http: // www.example.com' et' www.example.com' en balises ''. –

Répondre

0

essayer cette regex:

(?<http>(http:[/][/]|www.)([a-z]|[A-Z]|[0-9]|[/.]|[~])*) 
+0

Merci. J'ai des problèmes avec l'utilisation dans une fonction: fonction remplacerWWW (texte) { var exp = (? (http: [/] [/] | www.) ([Az] | [AZ] | [ 0-9] | [/.] | [~]) *)/Ig; return text.replace (exp, "$1"); } Peut-être que j'ai manqué un caractère d'échappement? – user884899

1

Cela a fonctionné pour moi:

Ajouter un ()* ici

((https?|ftp|file):\/\/)* 

http://jsfiddle.net/jasongennaro/NBWyr/

Fondamentalement zéro ou plusieurs des éléments dans ()

+0

+1 Beau travail! Très sympa. – Maverick

+0

J'ai essayé cela avec 'var text = 'http://www.google.com est un site sympa, mais www.yahoo.com ne l'est pas.';' Et cela n'a pas fonctionné correctement. Plus de texte a été mis en évidence qu'il aurait dû l'être. – styfle

+0

@styfle. Pour autant que je sache, cette regex est destinée à travailler uniquement sur des adresses, pas sur des phrases. Je pourrais toutefois avoir tord. –

Questions connexes