我有以下代码用于将文本中的 http URL 转换为锚标记。它正在寻找以 http 开头的任何内容,并被空格(或输入的开头/结尾)包围
function linkify (str) {
var regex = /(^|\s)(https?:\/\/\S+)($|\s)/ig;
return str.replace(regex,'$1<a href="$2" target="_blank">$2</a>$3')
}
// This works
linkify("Go to http://www.google.com and http://yahoo.com");
// This doesn't, yahoo.com doesn't become a link
linkify("Go to http://www.google.com http://yahoo.com");
它不起作用的情况是如果我在两个链接之间只有一个空格。我假设这是因为两个链接之间的空间不能用于匹配两个 URL,在第一次匹配之后,URL 之后的空间已经被消耗。
玩:http: //jsfiddle.net/NgMw8/
有人可以建议一种正则表达式方法吗?我可以自己扫描字符串,寻找一种正则表达式的方式(或者某种不需要我自己扫描字符串并自己构建新字符串的方式。