JSFiddle - React, Tailwind, and code Playground

by Amatewasu

JavaScript

function markdownToHtml (md){
    md = md.replace(/\*{2}(.+?)\*{2}/g, '<b>$1</b>'); // **abc** -> <b>abc</b>
    md = md.replace(/\_{2}(.+?)\_{2}/g, '<b>$1</b>'); // __abc__ -> <b>abc</b>
    
    md = md.replace(/\*(.+?)\*/g, '<i>$1</i>'); // *abc* -> <i>abc</i>
    md = md.replace(/\_(.+?)\_/g, '<i>$1</i>'); // _abc_ -> <i>abc</i>

    md = md.replace(/\`(.+?)\`/g, '<pre>$1</pre>'); // `abc` -> <pre>abc</pre>

    var lines = md.split("\n");
    for (var i = 0; i < lines.length; i++){ // blockcode -> <pre>blockcode</pre>
        if (lines[i][0] === " " && lines[i][1] === " " && lines[i][2] === " " && lines[i][3] === " "){
            lines[i] = "<pre>"+ lines[i];
            for (var j = i + 1; j < lines.length; j++){
                if (!(lines[j][0] === " " && lines[j][1] === " " && lines[j][2] === " " && lines[j][3] === " ")){
                    lines[j - 1] += "</pre>";
                    i = j;
                    break;
                }
            }
        } else if (lines[i][0] === ">" && lines[i][1] === " "){
            lines[i] = "<blockquote>"+ lines[i];
            for (var j = i + 1; i < lines.length; j++){
                if (!(lines[j][0] === ">" && lines[j][1] === " ")){
                    lines[j - 1] += "</blockquote>";
                    i = j;
                    break;
                 }
            }
        }
    }
    
    
    
    return md;
}

alert(markdownToHtml("*lol* _foo_ **bar** __baz__"));