Một số triển khai Markdown – cụ thể là phía máy chủ của Stack Overflow C# version MarkdownSharp (ở đây là optional behavior) và phiên bản JavaScript phía máy khách PageDown, nhưng cũng có nghĩa là GitHub's flavor – đã bị lệch khỏi thông số Markdown vì chính lý do bạn mô tả.
Đối với một số lịch sử về điều này theo như Stack Overflow, hãy xem hai bài đăng trên blog Three Markdown Gotchas và Markdown, One Year Later.
Vì đây là một lời chỉ trích thường được tiết lộ về Markdown, có thể có nhiều triển khai hơn khiến hành vi này có thể được người dùng cài đặt hoặc chỉ cần đi với phiên bản nghiêm ngặt hơn. Vì vậy, nó phụ thuộc vào những gì bạn đang thực hiện.
Nếu bạn đang sử dụng cổng dựa trên triển khai Perl gốc của John Gruber (nghĩa là "tấn phiên bản thay thế regex"), bạn sẽ dễ dàng thực hiện thay đổi này. Chức năng liên quan có thể được gọi là _DoItalicsAndBold
(phiên bản Perl gốc, Hiển thị/Trang), DoItalicsAndBold
(MarkdownSharp), _do_italics_and_bold
(python-markdown2) hoặc tương tự.
Nhìn vào PageDown version of that function của chúng tôi cho các biểu thức thông thường khắt khe hơn được sử dụng ở đây trên 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;
}