首页 > 解决方案 > 如何搜索任何匹配的未链接 URL 并将其替换为 href?

问题描述

我的目标是找到与www.website.comwebsite.com匹配的所有字符串。

如果该地址当前未链接,则将任何匹配的字符串替换为...

<a href="https://www.website.com">www.website.com</a>

或者

<a href="https://www.website.com">website.com</a>

这是我到目前为止所拥有的...

document.body.innerHTML = document.body.innerHTML.replace(/website.com/g, '<a href="https://www.website.com">www.website.com</a>');
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam minima, www.website.com suscipit expedita excepturi laboriosam website.com nesciunt accusantium quae placeat ex nostrum esse corrupti nisi hic velit commodi molestiae.</p>

但是,我似乎无法解释前面已经有www的地址。

标签: javascript

解决方案


您可以将通用正则表达式设为

const regex = /(www.)?(\w+|\d+)+(\.com)/;

演示

const str1 = "website.com";
const str2 = "www.website.com";
const str3 = "www.google.com";
const str4 = "www.regex101.com";
const regex = /(www.)?(\w+|\d+)+(\.com)/;

const result1 = str1.replace(regex, `<a href="https://www.$2.com">$1$2$3</a>`);
const result2 = str2.replace(regex, `<a href="https://www.$2.com">$1$2$3</a>`);
const result3 = str3.replace(regex, `<a href="https://www.$2.com">$1$2$3</a>`);
const result4 = str4.replace(regex, `<a href="https://www.$2.com">$1$2$3</a>`);

console.log(result1);
console.log(result2);
console.log(result3);
console.log(result4);


推荐阅读