在我的网站上,用户可以输入评论。如果此评论包含网址,我需要将此网址替换为此网址的链接
例如:
来自:
Hi guys, you can visit me website at: http://foo.com for more info
为:
Hi guys, you can visit me website at: <a href="http://foo.com">http://foo.com</a> for more info
我使用RegEx查找字符串中的所有URL,但如何使用基于当前URL的新字符串替换每个URL(RegEx模式)。
例如:
var urlRegEx = /(...)/g; // a very long regex pattern that matches urls
var staticText = "bla bla bla http://foo.bar bla bla bla";
var hyperText = staticText.replace(urlRegEx, "<a href='" + urlRegEx + "'/>" + urlRegEx + "</a>"); // This of course will not work!!! :-(
我正在寻找RegExs的解决方案。另外,是的,我知道我可以将RegEx.exec(staticText)[0]
的值保存在循环内的新参数中并逐个替换它们,但是我可以这样做吗没有循环字符串???
答案 0 :(得分:0)
您的模式被括号括起来,因为您想捕获它。要使用捕获的值,您必须使用$1
:
var urlRegEx = /(...)/g;
var staticText = "bla bla bla http://foo.bar bla bla bla";
var hyperText = staticText.replace(urlRegEx, "<a href='$1'/>$1</a>");
^^ ^^
答案 1 :(得分:0)
var hyperText = staticText.replace(urlRegEx, "<a href='$0'/>$0</a>");
执行方法RegEx.protptype.exec(string)
时,您将获得一个match
对象(这是一个数组),其中包含与RegEx模式匹配的值。您可以使用$ i访问此数组的值i
是匹配数组的索引。
因此,要访问匹配模式的竞争值,请访问0索引 - $ 0