JavaScript用函数结果替换文本中的每个匹配

JavaScript replacing text with function result for each match in text

本文关键字:文本 函数 结果 替换 JavaScript      更新时间:2023-09-26

我试图将textarea元素中的所有链接替换为该文本的函数结果。

的例子:<>之前Url =/(^|<|'s)(www'..+?'..+?)('s|>|$)/g;Text = "含有链接的文本www.stackoverflow.com";文本。替换(url,转换(结果));document . write(文本);函数转换(链接){返回"XX" +链接+ "XX";}之前

我需要的是在该字符串中找到的每个链接,被转换成XX或任何其他字符串包围。事实是,我需要文本中的每个链接都被发送到该函数,所以我可以替换它们中的每一个。

我已经在网上搜索了几个小时。尝试了很多东西。没有作品。

有什么好主意吗?

提前感谢!

有几个问题。

  1. replace函数允许引用一个函数作为它的第二个参数。调用 convert函数,没有传递引用。
  2. replace功能不修改原字符串。您需要保存其结果。
  3. 您试图在convert被定义之前使用它。

把它们放在一起:

function convert(link) {
    return " XX " + link + "XX";
}
var url = /(^|<|'s)(www'..+?'..+?)('s|>|$)/g;
var text = "Text with link inside www.stackoverflow.com";
text = text.replace(url, convert);
输出:

"Text with link inside XX www.stackoverflow.comXX"

String#replace不会修改接收方,因为JavaScript中的字符串是不可变的。你想要这样:

url = /(^|<|'s)(www'..+?'..+?)('s|>|$)/g;
text = "Text with link inside www.stackoverflow.com";
text = text.replace(url, convert(RESULT));
document.write(text);
function convert(link){
  return " XX " + link + "XX";
}

还有,你提到了Text而不是text,我已经纠正了。