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);
This is what I want to do,
Before:
(look: this) is a (look: stackoverflow) question.
After:
this is a stackoverflow question
When there is only one matched string, it's working but in other cases It's not working properly,
How can I do that? Thanks.
You need to add the global g
modifier , and a non-greedy match so the regular expression finds all matches:
/\\(look: (.{1,80}?)\\)/g
In your code:
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);
Outputs:
"<a href="look.php?word=this">this</a> is a <a href="look.php?word=stackoverflow">stackoverflow</a> question"
Use the g
flag:
message .replace(/\(look: (.{1,80})\)/g, helpLinkConvert);
The g
(stands for "global") will match against all occurrences of the pattern on this string, instead of just the first one.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.