Markdown将双星号转换为javascript中的粗体文本

tim*_*son 8 javascript markdown jquery wysiwym

我正在尝试像Stackoverflow那样制作我自己的可降价的textarea.目标是允许人们键入**blah blah**textarea并将输出放在div中<span style="font-weight:bold;">blah blah</span>.

我在用javascript查找并用HTML替换**星号时遇到问题.

这是一个让聚会开始的jsfiddle:http://jsfiddle.net/trpeters1/2LAL4/14/

这里的JS只是为了告诉你我在哪里:

$(document.body).on('click', 'button', function() {

var val=$('textarea').val();

var bolded=val.replace(/\**[A-z][0-9]**/gi, '<span style="font-weight:bold;">"'+val+'" </span>');

$('div').html(bolded);
});
Run Code Online (Sandbox Code Playgroud)

和HTML ...

<textarea></textarea>
<div></div><button type="button">Markdownify</button>
Run Code Online (Sandbox Code Playgroud)

任何想法将不胜感激!

谢谢,蒂姆

Jus*_*tin 11

当字母紧跟在星号之前或之后,其他答案都会失败.

这有点像降价应该:

function boldText(text){
    var bold = /\*\*(\S(.*?\S)?)\*\*/gm;
    var html = text.replace(bold, '<strong>$1</strong>');            
    return html;
}

alert(boldText('te**st**ing'));
Run Code Online (Sandbox Code Playgroud)

见JSFiddle

  • 如果第一个出现后面跟着另一个仅包含一个字母的出现,则此方法不起作用 http://jsfiddle.net/b5gvajsx/9/ (2认同)
  • 在单行的`return text.replace(/ \ * \ *(\ S(。*?\ S)?)\ * \ * / gm,'&lt;strong&gt; $ 1 &lt;/ strong&gt;')` (2认同)
  • 删除所有 \S 似乎已经解决了 LaurelB 的问题。更新了答案。 (2认同)

aro*_*oth -2

一方面,您的正则表达式已损坏。你可能想要更多类似的东西:

/\*\*[A-z0-9]+\*\*/gi
Run Code Online (Sandbox Code Playgroud)

*正则表达式中的特殊字符。如果你想匹配文字*,那么你需要用 来转义它\

例如: http: //jsfiddle.net/2LAL4/22/

然而,即使有了这样的改变,在你到达你真正想要的地方之前,仍然有很长的路要走。例如,如果文本区域包含粗体和非粗体文本的混合,您的示例将不起作用。