JavaScript中的RegExp问题

时间:2010-11-02 11:12:42

标签: javascript regex

我想在文本中找到每个网址并用标记(<a href="...">...</a>)包装它们。

var src = "bla blaaa blaaaaaa 1  http://yahoo.com  text something about and. http://www.google.com";
var match = /http:\/\/([a-z0-9.-]+)/.exec(src); //this only can one matched
// result: ["http://yahoo.com", "yahoo.com"]

但我需要包装每个链接。

2 个答案:

答案 0 :(得分:2)

您可以使用/g(全局)匹配所有匹配项和反向引用,如下所示:

var src = "bla blaaa blaaaaaa 1  http://yahoo.com  text something about and. http://www.google.com";
var match = src.replace(/http:\/\/([a-z0-9.-]+)/g, '<a href="$1">$1</a>');

You can test it out here

答案 1 :(得分:1)

var res = src.replace(/(http:\/\/([a-z0-9.-]+))/g, '<a href="$1">$2</a>');

输出:

bla blaaa blaaaaaa 1 <a href="http://yahoo.com">yahoo.com</a> text something about and. <a href="http://www.google.com">www.google.com</a>

不确定是不是意图,而是我能想到的。如果您想在链接文字中保留<a href="$1">$1</a>前缀,请使用http://替换。

(与此同时,Nick Craver提供了答案介绍了g修饰符。)