admin管理员组

文章数量:1322527

I have the following string:

This *is* a *test*!

I want to bold the words surrounded by the * characters (so "is" and "test" in the example).

I have the following JavaScript code:

var data = "This *is* a *test*!";
return data.replace(/\*(.*)\*/g, <b>$1</b>);

When the string is returned, I get the following:

This <b>is* a *test</b>!

How can I change the pattern or basic code in order to do the replacement the way I want it?

I have the following string:

This *is* a *test*!

I want to bold the words surrounded by the * characters (so "is" and "test" in the example).

I have the following JavaScript code:

var data = "This *is* a *test*!";
return data.replace(/\*(.*)\*/g, <b>$1</b>);

When the string is returned, I get the following:

This <b>is* a *test</b>!

How can I change the pattern or basic code in order to do the replacement the way I want it?

Share Improve this question asked Jun 17, 2009 at 21:39 JamesEggersJamesEggers 12.9k14 gold badges65 silver badges89 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 5

SO messed with my HTML...

var result = "This *is* a *test*!".replace(/\*(.*?)\*/gi, "<b>$1</b>");

You need to make the pattern non-greedy by adding the ?-operator after the *:

var data = "This *is* a *test*!";
return data.replace(/\*(.*?)\*/g, "<b>$1</b>");

Here is a reference for JavaScript RegExp from Mozilla Developer Center.

本文标签: regexHandling Multiple JavaScript Replace MatchesStack Overflow