4

我正在尝试将 之间的文本加粗*,就像*bold*我在 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(bold, function($0,$1){
    return $1 ? ('<b>' + $1 + '</b>') : $0;
});
4

2 回答 2

5

正则表达式没问题,但你的逻辑不是:

var replacedText = replacedText.replace(bold, function($0,$1){
    return $1 ? ('<b>' + $1 + '</b>') : $0;
});

条件被颠倒了,无论如何你应该$1在替换时使用而不是$0(后者包括星号)。

于 2012-07-13T07:35:25.977 回答
1

就像是:

function makeBold(id) {

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

  var el = document.getElementById(id);
  el.innerHTML = el.innerHTML.replace(re, '<b>$2</b>');
}

应该让你开始。

于 2012-07-13T07:37:24.790 回答