javascript - string.replace 中的正则表达式带有回调函数

标签 javascript regex string replace

 function helpLinkConvert(str, p1, offset, s)  {  
      return "<a href=\"look.php?word="
               +encodeURIComponent(p1)+"\">"+p1+"</a>";
     }

var message = "(look: this) is a (look: stackoverflow) question";
message = message .replace(/\(look: (.{1,80})\)/, helpLinkConvert);

这就是我想做的

之前:

(看:这个)是一个(看:stackoverflow)问题。

之后:

thisstackoverflow问题

<小时/>

当只有一个匹配的字符串时,它可以工作,但在其他情况下它不能正常工作,

我怎样才能做到这一点?谢谢。

最佳答案

您需要添加全局 g修饰符 和非贪婪匹配,以便正则表达式找到所有匹配项:

/\(look: (.{1,80}?)\)/g

在您的代码中:

function helpLinkConvert(str, p1, offset, s) {  
    return "<a href=\"look.php?word="+encodeURIComponent(p1)+"\">"+p1+"</a>";
}

var message = "(look: this) is a (look: stackoverflow) question";
message = message.replace(/\(look: (.{1,80}?)\)/g, helpLinkConvert);

输出:

"<a href="look.php?word=this">this</a> is a <a href="look.php?word=stackoverflow">stackoverflow</a> question"

关于javascript - string.replace 中的正则表达式带有回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8459251/

相关文章:

javascript - 尝试让 "perfect URL validation regex"在 ruby​​ 和 javascript 中工作

string - Swift:替换字符串中的字符 - 没有 stringByReplacingOccurrencesOfString

python - 在 Python 中将一长串位作为半字节转换为十进制

javascript - 如何强制匹配的 window.matchMedia 在页面加载时执行?

JavaScript undefined object

javascript - 从 Javascript 中的推文中删除 'RT @name'

php - PHP解析CSV的正则表达式

python - 查找 pandas.Series 中的所有非数字元素

javascript - 将图像文件放在 node.js 中的什么位置?

javascript - 使用空白值初始化 React 数字输入控件?