美文网首页
marked学习笔记

marked学习笔记

作者: plightfieldDo | 来源:发表于2018-02-08 11:57 被阅读0次

    正则处理解析

    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|$))+/
    理论上引用可以无限嵌套

    相关文章

      网友评论

          本文标题:marked学习笔记

          本文链接:https://www.haomeiwen.com/subject/xsozzxtx.html