文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

JavaScript如何实现简单的Markdown语法解析器

2023-07-05 15:20

关注

本篇内容主要讲解“JavaScript如何实现简单的Markdown语法解析器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript如何实现简单的Markdown语法解析器”吧!

什么是markdown

Markdown 是一种轻量级标记语言,创始人为约翰·格鲁伯(John Gruber)。 它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的 XHTML(或者HTML)文档。这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。

由于 Markdown 的轻量化、易读易写特性,并且对于图片,图表、数学式都有支持,许多网站都广泛使用 Markdown 来撰写帮助文档或是用于论坛上发表消息。 如 GitHubRedditDiasporaStack ExchangeOpenStreetMap 、SourceForge、简书等,甚至还能被使用来撰写电子书。现在我们所看的 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><h4 >JavaScript实现一个简单的MarkDown语法解析器</h4><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语法为htmlfunction markdownToHTML(markdownContent) {  // 处理标题  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(/^######\s(.*)$/gm, '<h7>$1</h7>');  // 处理加粗、斜体、删除线  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语法解析器”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯