降价 - 我是否可以通过下划线来逃避它们并且没有降价斜体?

Mic*_*ant 16 markdown code-formatting

我希望文本中包含下划线.

这不是代码,因此我不想使用代码格式.

我想停止降价处理它作为斜体的指示.

我可以逃避_each_underscore(参见!),\但我总共有20个,在源头看起来很难看,难以维护而且不是很干.

还有其他选择吗?

bal*_*pha 15

一些Markdown实现 - 特别是Stack Overflow的服务器端C#版本MarkdownSharp(它是可选行为)和客户端JavaScript版本PageDown,还有例如GitHub的风格 - 因为你描述的原因而偏离了Markdown规范.

有关Stack Overflow的一些历史记录,请参阅两篇博客文章三个Markdown GotchasMarkdown,一年后.

由于这是对Markdown的普遍批评,可能有更多的实现要么使这种行为是用户可设置的,要么完全与更严格的版本一起使用.所以这取决于你正在使用什么实现.

如果您使用的是基于John Gruber原始Perl实现的端口(即"吨的正则表达式替换"版本),那么自己进行此更改应该相当容易.可能调用相关函数_DoItalicsAndBold(原始Perl版本,Showdown/PageDown),DoItalicsAndBold(MarkdownSharp),_do_italics_and_bold(python-markdown2)或类似函数.

查看我们的PageDown版本的函数 ,了解Stack Overflow中使用的更严格的正则表达式:

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;
}
Run Code Online (Sandbox Code Playgroud)