亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JavaScript實現簡單的Markdown語法解析器

 更新時間:2023年03月22日 09:22:24   作者:TANKING  
Markdown 是一種輕量級標記語言, 它允許人們使用易讀易寫的純文本格式編寫文檔,然后轉換成有效的 XHTML(或者HTML)文檔。本文將利用JavaScript實現簡單的Markdown語法解析器,感興趣的可以了解一下

什么是markdown

Markdown 是一種輕量級標記語言,創(chuàng)始人為約翰·格魯伯(John Gruber)。 它允許人們使用易讀易寫的純文本格式編寫文檔,然后轉換成有效的 XHTML(或者HTML)文檔。這種語言吸收了很多在電子郵件中已有的純文本標記的特性。

由于 Markdown 的輕量化、易讀易寫特性,并且對于圖片,圖表、數學式都有支持,許多網站都廣泛使用 Markdown 來撰寫幫助文檔或是用于論壇上發(fā)表消息。 如 GitHub、Reddit、DiasporaStack Exchange、OpenStreetMap 、SourceForge、簡書等,甚至還能被使用來撰寫電子書?,F在我們所看的 segmentfault 的編輯器也是支持markdown語法的!

上代碼

</!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8">
    <script src="https://cdn.staticfile.org/jquery/3.6.1/jquery.min.js"></script>
    <style>
        *{
            padding: 0;
            margin: 0;
            font-family: system-ui,-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Hiragino Sans GB,Microsoft YaHei UI,Microsoft YaHei,Arial,sans-serif;
        }
        #app{
            width: 810px;
            height: 400px;
            margin: 30px auto 0;
            padding: 20px 20px;
            background: #00965e;
        }
        #app .md-editor{
            width: 400px;
            height: 400px;
            float: left;
        }
        #app .md-content{
            width: 100%;
            height: 400px;
            outline: none;
            resize: none;
            padding: 10px 10px;
            font-size: 17px;
            border: none;
            background: #eee;
        }
        #app .md-html{
            width: 400px;
            height: 400px;
            float: right;
            background: #eee;
        }
        #app code{
            color: #666;
            padding: 2px 5px;
            background: #fff;
            border-radius: 5px;
            font-size: 14px;
        }
    </style>
</head>
<body>

<h3 style="text-align: center;margin-top: 100px;">JavaScript實現一個簡單的MarkDown語法解析器</h3>
<div id="app">
    
    <div class="md-editor">
        <form>
            <textarea name="md-content" class="md-content" placeholder="在這里使用markdown語法編寫"></textarea>
        </form>
    </div>
    <div class="md-html">這里會實時顯示markdown語法的解析結果</div>
</div>

<script type="text/javascript">

// 解析markdown語法為html
function markdownToHTML(markdownContent) {

  // 處理標題
  markdownContent = markdownContent.replace(/^#\s(.*)$/gm, '<h1>$1</h1>');
  markdownContent = markdownContent.replace(/^##\s(.*)$/gm, '<h2>$1</h2>');
  markdownContent = markdownContent.replace(/^###\s(.*)$/gm, '<h3>$1</h3>');
  markdownContent = markdownContent.replace(/^####\s(.*)$/gm, '<h4>$1</h4>');
  markdownContent = markdownContent.replace(/^#####\s(.*)$/gm, '<h5>$1</h5>');
  markdownContent = markdownContent.replace(/^######\s(.*)$/gm, '<h6>$1</h6>');

  // 處理加粗、斜體、刪除線
  markdownContent = markdownContent.replace(/\*\*(.*)\*\*/gm, '<strong>$1</strong>');
  markdownContent = markdownContent.replace(/__(.*)__/gm, '<strong>$1</strong>');
  markdownContent = markdownContent.replace(/\*(.*)\*/gm, '<em>$1</em>');
  markdownContent = markdownContent.replace(/_(.*)_/gm, '<em>$1</em>');
  markdownContent = markdownContent.replace(/~~(.*)~~/gm, '<del>$1</del>');

  // 處理鏈接和圖片
  markdownContent = markdownContent.replace(/\[(.*?)\]\((.*?)\)/gm, '<a href="$2" rel="external nofollow" >$1</a>');
  markdownContent = markdownContent.replace(/!\[(.*?)\]\((.*?)\)/gm, '<img src="$2" alt="$1">');

  // 處理行內代碼和代碼塊
  markdownContent = markdownContent.replace(/`(.*?)`/gm, '<code>$1</code>');
  markdownContent = markdownContent.replace(/```([\s\S]*?)```/gm, '<pre>$1</pre>');

  // 處理換行
  markdownContent = markdownContent.replace(/\n/g, "<br>");

  return markdownContent;
}

// 實時解析markdown語法
$("#app .md-editor .md-content").bind("input propertychange",function(event){

    let md_content = $('#app .md-editor .md-content').val();
    $('#app .md-html').html(markdownToHTML(md_content));
});


</script>
</body>
</html>

實現原理

實現起來非常簡單,就是通過正則替換預定的字符來實現HTML的輸出。

demo

到此這篇關于JavaScript實現簡單的Markdown語法解析器的文章就介紹到這了,更多相關JavaScript Markdown語法解析器內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 詳談JavaScript內存泄漏

    詳談JavaScript內存泄漏

    文章從什么是閉包、以及閉包所涉及的作用域鏈說起,講述了JavaScript垃圾回收機制、循環(huán)引用、循環(huán)引用和閉包、IE中的內存泄漏以及解決方法,是篇非常詳盡,非常不錯的文章,這里推薦給大家。
    2014-11-11
  • JS實現滑動門效果的方法詳解

    JS實現滑動門效果的方法詳解

    這篇文章主要介紹了JS實現滑動門效果的方法,結合實例形式分析了滑動門效果的實現原理、步驟與相關注意事項,需要的朋友可以參考下
    2016-12-12
  • 使用JavaScript實現一個靜態(tài)鏈表

    使用JavaScript實現一個靜態(tài)鏈表

    這篇文章主要為大家詳細介紹了如何使用JavaScript實現一個靜態(tài)鏈表,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-06-06
  • JS實現在頁面隨時自定義背景顏色的方法

    JS實現在頁面隨時自定義背景顏色的方法

    這篇文章主要介紹了JS實現在頁面隨時自定義背景顏色的方法,實例分析了javascript操作css樣式的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • 各情景下元素寬高的獲取實現代碼

    各情景下元素寬高的獲取實現代碼

    為了敘述簡單,這里僅拿width示例。獲取元素的offsetWidth/offsetHeight,減去元素的padding和border。
    2011-09-09
  • Javascript Event事件中IE與標準DOM的比較

    Javascript Event事件中IE與標準DOM的比較

    說是IE與DOM的比較,其實還是瀏覽器之間的比較,眾多的瀏覽器中,IE獨樹一幟,并且占有大部分用戶市場,后來的標準DOM雖然不少優(yōu)點之處,但畢竟一般用戶不關心也不知道這些,代碼編寫過程中,往往需要兼顧多個瀏覽器。
    2010-04-04
  • 用幾道面試題來看JavaScript執(zhí)行機制

    用幾道面試題來看JavaScript執(zhí)行機制

    這篇文章主要介紹了JavaScript的執(zhí)行機制,對此感興趣的同學,可以參考下
    2021-04-04
  • JavaScript中你不得不知道的Promise高級用法分享

    JavaScript中你不得不知道的Promise高級用法分享

    在JavaScript中,Promise是一種解決異步編程問題的重要方式,本文主要來和大家探討一下23個Promise的高級用法,每一個都在JavaScript的海洋中航行,讓開發(fā)者們能夠以更高效、優(yōu)雅的方式處理異步操作,希望對大就有所幫助
    2023-12-12
  • js 獲取坐標 通過JS得到當前焦點(鼠標)的坐標屬性

    js 獲取坐標 通過JS得到當前焦點(鼠標)的坐標屬性

    通過JS得到當前焦點的坐標,如何實現,接下來詳細介紹實現步驟,有需要的朋友可以參考下
    2013-01-01
  • Layui之table中的radio在切換分頁時無法記住選中狀態(tài)的解決方法

    Layui之table中的radio在切換分頁時無法記住選中狀態(tài)的解決方法

    今天小編就為大家分享一篇Layui之table中的radio在切換分頁時無法記住選中狀態(tài)的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09

最新評論