Javascript 需要正则表达式来生成*粗体之间的文本

Javascript 需要正则表达式来生成*粗体之间的文本,javascript,html,regex,Javascript,Html,Regex,我尝试在*之间加粗文本,就像*加粗*我尝试在JavaScript中使用正则表达式,但我不知道为什么它不起作用 var bold = /\*(.*?)\*/gim; var replacedText = replacedText.replace(bold, function($0,$1){ return $1?$0:'<b>' + $0 + '</b>'; }); var bold=/\*(.*)\*/gim; var replacedText=replacedT

我尝试在
*
之间加粗文本,就像
*加粗*
我尝试在JavaScript中使用正则表达式,但我不知道为什么它不起作用

var bold = /\*(.*?)\*/gim;
var replacedText = replacedText.replace(bold, function($0,$1){
    return $1?$0:'<b>' + $0 + '</b>';
});
var bold=/\*(.*)\*/gim;
var replacedText=replacedText.replace(粗体,函数($0,$1){
返回$1?$0:“+$0+”;
});
谢谢你们,这是最后的答案

已编辑

var bold = /\*(.*?)\*/gim;
var replacedText = replacedText.replace(bold, function($0,$1){
    return $1 ? ('<b>' + $1 + '</b>') : $0;
});
var bold=/\*(.*)\*/gim;
var replacedText=replacedText.replace(粗体,函数($0,$1){
返回$1(“+$1+”):$0;
});

正则表达式正常,但您的逻辑不正常:

var replacedText = replacedText.replace(bold, function($0,$1){
    return $1 ? ('<b>' + $1 + '</b>') : $0;
});
var replacedText=replacedText.replace(粗体,函数($0,$1){
返回$1(“+$1+”):$0;
});
条件是相反的,在任何情况下,替换时都应该使用
$1
,而不是
$0
(后者包括星号)。

类似于:

function makeBold(id) {

  var re = /(\*)([^*]*)(\*)/g;

  var el = document.getElementById(id);
  el.innerHTML = el.innerHTML.replace(re, '<b>$2</b>');
}
函数makeBold(id){
变量re=/(\*)([^*]*)(\*)/g;
var el=document.getElementById(id);
el.innerHTML=el.innerHTML.replace(re,$2');
}
你应该开始了