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);
这就是我想做的事,
之前:
(看:这个)是一个(look:stackoverflow)问题。
之后:
this是一个stackoverflow问题
当只有一个匹配的字符串时,它正在工作,但在其他情况下,它无法正常工作,
我该怎么做?感谢。
答案 0 :(得分:5)
您需要添加全局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"
答案 1 :(得分:2)
使用g
标志:
message .replace(/\(look: (.{1,80})\)/g, helpLinkConvert);
g
(代表“全局”)将匹配此字符串上模式的所有次出现,而不仅仅是第一次出现。