marked学习笔记

正则处理解析

1. 标题——heading

/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/
首先忽略标题开始时的空格:^ *
然后是匹配1到6次的#号:(#{1,6})
忽略#到文本的空格之后,不接受换行符为止:*([^\n]+?)
或者显式地指定标题结尾:*#*
再对全局非获取匹配换行符:*(?:\n+|$)
非获取匹配——定义与运算符一起使用的子表达式
老式语法中head也有文本后跟两个等号的:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/

2 分割线——hr

/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/
任意数量的_,-,*都可以产生分割线
头部可以有0-3数量的空格

3. 段落

/^([^\n]+(?:\n?(?!hr|heading| {0,3}>|tag)[^\n]+)+)/
tag是让marked支持直接解析html标签,其语法如下:

block._tag = '(?!(?:'
  + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'
  + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'
  + '|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b';

然而轻度的markdown使用并不需要这个,因此可以将段落继续简化为:
/^([^\n]+(?:\n?(?!hr|heading| {0,3}>)[^\n]+)+)/
其中包含标题,分割线,应用等。

4. 引用——blockquote

/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/
理论上引用可以无限嵌套

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • .bat脚本基本命令语法 目录 批处理的常见命令(未列举的命令还比较多,请查阅帮助信息) 1、REM 和 :: 2...
    庆庆庆庆庆阅读 8,549评论 1 19
  • 一、字符串操作 PHP开发中,我们遇到最多的可能就是字符串。 一个字符串 通过下面的3种方法来定义: 1、单引号 ...
    空谷悠阅读 1,005评论 1 6
  • 基础命令 主要的命令和快捷键 Linux系统命令由三部分组成:cmd + [options]+[operation...
    485b1aca799e阅读 1,238评论 0 0
  • 馋虫今天发作了,一早上不辞辛苦的跑到了粮道街去吃想念已久的早餐——赵师傅家的油饼包烧麦。 没吃过的朋友第一次听到...
    童小咪阅读 603评论 5 2
  • 我知道社会冷漠,但我却固执寻求温暖----题记 不知道是从什么时候开始,我身边的很多人都和我说:这...
    吃老虎的猫阅读 892评论 0 0

友情链接更多精彩内容