Javascript正则表达式:将encodeURIComponent与replaceWith()一起使用

Javascript正则表达式:将encodeURIComponent与replaceWith()一起使用,javascript,regex,Javascript,Regex,我一直在试图找出最聪明(也是最有效)的方法,用a href替换纯文本URL,并以某种方式使用encodeURIComponent()函数 到目前为止,我提出的代码如下所示: var regex = /(\b((https?):\/\/|(www))[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|]*)/ig; $(element).replaceWith(element.textContent.replace(regex, '<a

我一直在试图找出最聪明(也是最有效)的方法,用
a href
替换纯文本URL,并以某种方式使用
encodeURIComponent()
函数

到目前为止,我提出的代码如下所示:

var regex = /(\b((https?):\/\/|(www))[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|]*)/ig;
$(element).replaceWith(element.textContent.replace(regex, '<a href="$1" target="_blank">$1</a>'));
1. My website at http://example.com/ is awesome
2. My website at www.example.com is awesome
1. My website at <a href="http%3A%2F%2Fexample.com%2F">http://example.com/</a> is awesome.
2. My website at <a href="www.example.com">www.example.com</a> is awesome.
预期产出:

var regex = /(\b((https?):\/\/|(www))[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|]*)/ig;
$(element).replaceWith(element.textContent.replace(regex, '<a href="$1" target="_blank">$1</a>'));
1. My website at http://example.com/ is awesome
2. My website at www.example.com is awesome
1. My website at <a href="http%3A%2F%2Fexample.com%2F">http://example.com/</a> is awesome.
2. My website at <a href="www.example.com">www.example.com</a> is awesome.
1。我的网站非常棒。
2.我的网站非常棒。

执行此操作的最佳方法是什么?

您可以使用组运算符:

寻找

^(.*)(http:\/\/|www\.)([^\s]*)(.*)$
取而代之的是

$1<a href="$2$3">$2$3</a> is awesome.
1美元太棒了。

var re=/^(.*)(http:\/\/\/\\\\\/\\ www\.)([^\s]*)(.*)$/mg;
var str='1。我的网站在http://example.com/ 太棒了\n2。我的网站www.example.com非常棒;
var subst=“$1太棒了。”;
var结果=str.replace(re,subst);
有了它,您可以轻松地添加
encodeURIComponent()
使用回调。可以在回调函数中使用匹配项,对于
href
属性,可以使用
encodeURIComponent

var str=`1。我的网站在http://example.com/ 太棒了
2.我的网站www.example.com非常棒`;
var regex=/(\b((https?:\/\/(www))[-A-Z0-9+&-\/%?=+++++++.]:,.;]*[-A-Z0-9+&-/%=-+++--/%=+++-/%=-\]/ig;
str=str.replace(正则表达式,函数(m,e){
返回“”;
});
console.log(str);

document.body.innerHTML=str$(元素)。替换为
?@Robin使用更新的
str
<代码>$(元素)。替换为(str)啊,是的,你是对的。标记作为答案,很好的解决方案!是的,我知道。但是如果我想保留我的原始代码
$(元素)。替换为