【问题标题】:How to create URL links from strings如何从字符串创建 URL 链接
【发布时间】:2011-08-12 21:47:48
【问题描述】:

我正在使用:

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

例如将http://www.example.com 转换为可点击的链接。这很好用!

有谁知道如何扩展这个表达式来捕获www.example.com(即没有http://)?

【问题讨论】:

  • 从头开始。你想做什么?
  • @Ash:看来他想将字符串http://www.example.comwww.example.com 转换为&lt;a&gt; 标签。
  • 是的 - 我正在尝试将 example.com 和 www.example.com 转换为 标签。
  • 这在原则上很好,但并不容易......根据您的来源,您最终可能会得到很多误报。

标签: javascript html regex


【解决方案1】:

这对我有用:

在此处添加( )*

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

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

() 中基本上有零个或多个项目

【讨论】:

  • 我用var text = 'http://www.google.com is a cool website, but www.yahoo.com is not.'; 试过了,但它不能正常工作。突出显示的文本超出了应有的范围。
  • @styfle。据我所知,这个正则表达式只适用于地址,而不是句子。不过,我可能是错的。
  • @Jason 我想它会解析一个文本块,就像网站上的评论一样,然后查找并替换该块中的链接。
【解决方案2】:

试试这个正则表达式:

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

【讨论】:

  • 谢谢。我在函数中使用它时遇到问题: function replaceWWW(text) { var exp = (?(http:[/][/]|www.)([a-z]|[A-Z]|[0 -9]|[/.]|[~])*)/ig; return text.replace(exp,"$1"); } 也许我错过了一个转义字符?
猜你喜欢
  • 2013-02-12
  • 2012-09-25
  • 2013-09-18
  • 1970-01-01
  • 2020-12-22
  • 1970-01-01
  • 1970-01-01
  • 2014-12-03
  • 1970-01-01
相关资源
最近更新 更多