2012-04-24 127 views
15

我想有有下划线的文本它。markdown - 我可以突出显示不带标记的斜体吗?

这不是代码,所以我不想使用的代码格式。

我想停止降价处理它作为斜体它的指令。

我可以通过\来逃避_each_underscore(看!),但我总共有20个,看起来很丑,很难维护,而且不太干。

任何其他的选择吗?

回答

13

一些降价实现–特别堆栈溢出的服务器端C#版本MarkdownSharp(其中它的optional behavior)和客户端JavaScript版本PageDown,而且还例如由于你描述的原因,GitHub's flavor –已经偏离了Markdown规范。

有关此堆栈溢出的一些历史记录,请参阅两篇博文Three Markdown GotchasMarkdown, One Year Later

由于这是降价的常用说出批评,有可能是多个实现,要么让这种行为可由用户设置,或者只是用更严格的版本,请完全。所以这取决于你使用的是什么实现。

如果您使用的是基于约翰格鲁伯原来的Perl实现一个端口(即“吨的正则表达式替换”版本),它应该很容易使这个改变自己。相关的功能很可能是所谓的_DoItalicsAndBold(原Perl版本,摊牌/ PageDown键),DoItalicsAndBold(MarkdownSharp),_do_italics_and_bold(蟒蛇-markdown2)或类似。

看看我们PageDown version of that function对于这里使用的堆栈溢出严格的正则表达式:

function _DoItalicsAndBold(text) { 

    // <strong> must go first: 
    text = text.replace(/([\W_]|^)(\*\*|__)(?=\S)([^\r]*?\S[\*_]*)\2([\W_]|$)/g, 
    "$1<strong>$3</strong>$4"); 

    text = text.replace(/([\W_]|^)(\*|_)(?=\S)([^\r\*_]*?\S)\2([\W_]|$)/g, 
    "$1<em>$3</em>$4"); 

    return text; 
} 
相关问题