我有这样的文字:test **test** **test** **test**
我希望使用以下代码将**test**
更改为<b>test</b>
:
var $text = 'test **test** **test** **test**';
$text = $text.replace(/\*\*[^\**]\*\*/,'<b>test</b>');
但我得到了这个输出:test **test<b>test</b>test** **test**
注意:明星之间可以是任何东西。 (比如SO编辑)
所需的输出:test <b>test</b> <b>test</b> <b>test</b>
问题是什么?
答案 0 :(得分:4)
这有效:
/\*\*[^\*]*\*\*/g
g
来替换所有出现的内容jsfiddle:http://jsfiddle.net/fDM3h/1/
替换**:
之间的任何内容的代码$text = $text.replace(/\*\*([^\*]*)\*\*/g,'<b>$1</b>');
答案 1 :(得分:2)
使用此:
\*\*([^\*]+)\*\*
并替换为捕获组$1
,如下所示:http://regex101.com/r/dJ7zG2
另外,你没有理由在这样的javascript变量中使用$。
var text = "test **test** **test2** **somethingelse**";
text = text.replace(\*\*([^\*]+)\*\*, "<b>$1</b>");
结果:
"test <b>test</b> <b>test2</b> <b>somethingelse</b>"