Algunas implementaciones de rebajas –, en particular, del lado del servidor de C# versión de desbordamiento de pila MarkdownSharp (donde es optional behavior) y del lado del cliente JavaScript versión PageDown, sino también, por ejemplo, GitHub's flavor – se han desviado de la especificación Markdown por el mismo motivo que usted describe.
Para obtener un poco de historia sobre esto en lo que respecta al desbordamiento de pila, consulte las dos publicaciones de blog Three Markdown Gotchas y Markdown, One Year Later.
Dado que se trata de una crítica comúnmente formulada de Markdown, probablemente haya más implementaciones que hagan que este comportamiento sea configurable por el usuario, o simplemente que vayan con la versión más estricta. Entonces, depende de qué implementación estés usando.
Si está utilizando un puerto basado en la implementación Perl original de John Gruber (es decir, la versión de "toneladas de regex recambios"), debería ser bastante fácil hacerlo usted mismo. La función relevante probablemente se llame _DoItalicsAndBold
(versión original de Perl, Showdown/PageDown), DoItalicsAndBold
(MarkdownSharp), _do_italics_and_bold
(python-markdown2) o similar.
vistazo a nuestra PageDown version of that function de las expresiones regulares más estrictas que se utilizan aquí en desbordamiento de pila:
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;
}