亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

正則表達(dá)解析 Markdown 語(yǔ)法

chaosx110 / 3735人閱讀

摘要:鏈接在語(yǔ)法中鏈接的表示形式為鏈接。。代表出現(xiàn)次或者無(wú)限次非貪婪模式讓正則表達(dá)式盡可能少的匹配,也就是說(shuō)一旦匹配成功匹配不再繼續(xù)嘗試,就是非貪婪模式。斜體表示以一個(gè)或者開(kāi)頭并結(jié)尾表示規(guī)則和第一個(gè)集合相同,中間包含個(gè)或多個(gè)字符的字符串。

轉(zhuǎn)載請(qǐng)注明出處

原文連接 http://blog.huanghanlian.com/article/5c80b4176f8b011040530140

文章起源

源于本博客開(kāi)發(fā)實(shí)現(xiàn)需要

在首頁(yè)列表需要對(duì)文字進(jìn)行截取,需要截取第一張Markdown 語(yǔ)法的圖片url。

在文章詳情頁(yè)以及關(guān)于文章展示的頁(yè)面。需要對(duì)文章內(nèi)容進(jìn)行截取。填充headdescription。利于seo優(yōu)化

Markdown 是一種可以使用普通文本編輯器編寫(xiě)的標(biāo)記語(yǔ)言,通過(guò)簡(jiǎn)單的標(biāo)記語(yǔ)法,它可以使普通文本內(nèi)容具有一定的格式。

真實(shí)場(chǎng)景以及功能需求

文章編寫(xiě)

文章列表預(yù)覽

頭部描述截取

需要做的事情是將文章Markdown 語(yǔ)法的字符串,對(duì)特定的語(yǔ)句進(jìn)行過(guò)濾。只顯示文章正文部分

實(shí)現(xiàn)場(chǎng)景

文章編寫(xiě)存入數(shù)據(jù)庫(kù)是字符串類型

在訪問(wèn)某篇文章后臺(tái)會(huì)去數(shù)據(jù)庫(kù)中取對(duì)應(yīng)的文章數(shù)據(jù)。
然后通過(guò)匹配將Markdown 語(yǔ)法的字符串轉(zhuǎn)義成html元素字符渲染輸出

"# 一級(jí)標(biāo)題
## 二級(jí)標(biāo)題
##### 五級(jí)標(biāo)題
- 列表第一項(xiàng)
- 列表第二項(xiàng)
1. 有序列表第一項(xiàng)
2. 有序列表第
二項(xiàng)
[標(biāo)題](鏈接地址)
![圖片描述](圖片鏈接地址)
*斜體*
**粗體**
> 引用段落
```
代碼塊
```"

現(xiàn)在需要做的是將這些字符去掉不想要的,提取內(nèi)容部分

正則表達(dá)式規(guī)則

在使用正則表達(dá)式解析 Markdown 語(yǔ)法之前,我們要先對(duì)正則表達(dá)式的規(guī)則有一個(gè)基本的認(rèn)識(shí),下面我整理了一張正則表達(dá)式語(yǔ)法對(duì)照表。

正則表達(dá)式預(yù)定義類:

字符 含義
. 除了回車符和換行符之外的所有字符,等價(jià)于1
d 數(shù)字字符,等價(jià)于[0-9] digit
D 非數(shù)字字符,等價(jià)于2
s 空白符,等價(jià)于[tnx0Bfr] space
S 非空白符,等價(jià)于3
w 單詞字符(字母,數(shù)字,下劃線),等價(jià)于[a-zA-Z_0-9] word
W 非單詞字符,等價(jià)于4

邊界

字符 含義
^ 以xxx開(kāi)始
$ 以xxx結(jié)束
b 單詞邊界
B 非單詞邊界

量詞

字符 含義
? 出現(xiàn)零次或一次(最多出現(xiàn)一次)
+ 出現(xiàn)一次或多次(至少出現(xiàn)一次)
* 出現(xiàn)零次或多次(任意次)
{n} 出現(xiàn)n次
{n,m} 出現(xiàn)n到m次
{n,} 至少出現(xiàn)n次
正則表達(dá)式解析 Markdown 語(yǔ)法

Markdown 語(yǔ)法包括標(biāo)題、圖片、鏈接、引用塊、列表、粗體、斜體等,下面是解析這些語(yǔ)法的正則表達(dá)式和簡(jiǎn)單說(shuō)明:

標(biāo)題(表示以一個(gè)或多個(gè)“#”開(kāi)頭的字符串,并且“#”之后有0個(gè)或以上的字符,如:“### 三級(jí)標(biāo)題”)。

^(#+)(.*)

鏈接 (在 Markdown 語(yǔ)法中鏈接的表示形式為 [鏈接](URL)。)。

/[[sS]*?]([sS]*?)/g

解釋:
匹配 [符 開(kāi)始
緊接著[sS]范圍類 空白符或者非空白符都可以的類。
*代表出現(xiàn)0次或者無(wú)限次
?非貪婪模式
讓正則表達(dá)式盡可能少的匹配,也就是說(shuō)一旦匹配成功匹配不再繼續(xù)嘗試,就是非貪婪模式。
做法很簡(jiǎn)單,在量詞后面加上?即可。

斜體(表示以一個(gè) * 或者 _ 開(kāi)頭并結(jié)尾(1表示規(guī)則和第一個(gè)集合相同),中間包含0個(gè)或多個(gè)字符的字符串)。

(*|_)(.*?)1

圖片(部分地方同鏈接)

![[^]]+]([^)]+)

粗體(同斜體)

(**|__)(.*?)1

刪除線(刪除線)

~~(.*?)~~

引用塊

(>|>)(.*)

內(nèi)聯(lián)代碼塊

`{1,2}[^`](.*?)`{1,2}

分割線

^-+$

`包圍的代碼塊

```([sS]*?)```[s]?

無(wú)序列表

^[s]*[-*+] +(.*)

有序列表

^[s]*[0-9]+.(.*)
function abstractFn(res){
  if(!res){
    return "";
  }else{
    var str=res.replace(/(**|__)(.*?)(**|__)/g,"")          //全局匹配內(nèi)粗體
    .replace(/![[sS]*?]([sS]*?)/g,"")                  //全局匹配圖片
    .replace(/[[sS]*?]([sS]*?)/g,"")                    //全局匹配連接
    .replace(//g,"")                                 //全局匹配內(nèi)html標(biāo)簽
    .replace(/(*)(.*?)(*)/g,"")                               //全局匹配內(nèi)聯(lián)代碼塊
    .replace(/`{1,2}[^`](.*?)`{1,2}/g,"")                       //全局匹配內(nèi)聯(lián)代碼塊
    .replace(/```([sS]*?)```[s]*/g,"")                       //全局匹配代碼塊
    .replace(/~~(.*?)~~/g,"")                               //全局匹配刪除線
    .replace(/[s]*[-*+]+(.*)/g,"")                           //全局匹配無(wú)序列表
    .replace(/[s]*[0-9]+.(.*)/g,"")                           //全局匹配有序列表
    .replace(/(#+)(.*)/g,"")                                    //全局匹配標(biāo)題
    .replace(/(>+)(.*)/g,"")                                    //全局匹配摘要
    .replace(/
/g,"")                                        //全局匹配換行
    .replace(/
/g,"")                                          //全局匹配換行
    .replace(/s/g,"")                                          //全局匹配空字符;
    return str.slice(0,155);
  }
}
  • rn ?

  • 0-9 ?

  • tbx0Bfr ?

  • a-zA-Z_0-9 ?

  • 文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

    轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/102478.html

    相關(guān)文章

    • 正則表達(dá)式之簡(jiǎn)易markdown文件解析

      摘要:使用正則表達(dá)式也可以寫(xiě)一個(gè)簡(jiǎn)單的解析器一般的表達(dá)式是這樣這是一個(gè)表達(dá)式這是一個(gè)表達(dá)式一行一個(gè)表達(dá)式,所以可以使用將內(nèi)容分割為一個(gè)數(shù)組,數(shù)組的都每一項(xiàng)都是一個(gè)表達(dá)式然后再對(duì)每一行表達(dá)式進(jìn)行解析,假如匹配到了如下表達(dá)式這是一個(gè)表達(dá)式這是一個(gè)表達(dá) 使用正則表達(dá)式也可以寫(xiě)一個(gè)簡(jiǎn)單的markdown解析器一般的markdown表達(dá)式是這樣 # 這是一個(gè)markdown表達(dá)式 ## 這是一個(gè)mar...

      darryrzhong 評(píng)論0 收藏0
    • marked.js使用雜記-markdown擴(kuò)展語(yǔ)法

      摘要:如何擴(kuò)展語(yǔ)法想要擴(kuò)展語(yǔ)法,也就需要深入了解的工作機(jī)制。的工作機(jī)制創(chuàng)建詞法解析器實(shí)例將字符串解析成是官方文檔的叫法,按照我的理解應(yīng)該是節(jié)點(diǎn)接下來(lái)創(chuàng)建解析器實(shí)例調(diào)用來(lái)解析,生成字符串到這里,的工作機(jī)制就完了。 請(qǐng)移步到我的Blog,獲得更好的閱讀體驗(yàn)!本文的鏈接請(qǐng)點(diǎn)這里 起因 我的博客系統(tǒng)的文章是直接使用gitbook保存的markdown文檔,后端使用marked.js來(lái)解析markd...

      huashiou 評(píng)論0 收藏0
    • 一次性搞懂JavaScript正則表達(dá)式之引擎

      摘要:總的來(lái)說(shuō),可以稱為文本主導(dǎo)的正則引擎,可以稱為表達(dá)式主導(dǎo)的正則引擎。首先,正則表達(dá)式在計(jì)算機(jī)看來(lái)只是一串符號(hào),正則引擎首先肯定要解析它。精通正則表達(dá)式書(shū)中說(shuō)引擎不支持非貪婪模式,很明顯不是引擎。正則表達(dá)式中可以商榷的部分就叫做備選狀態(tài)。 本文是『horseshoe·Regex專題』系列文章之一,后續(xù)會(huì)有更多專題推出GitHub地址:https://github.com/veedrin/...

      hlcc 評(píng)論0 收藏0
    • 12行代碼實(shí)現(xiàn)一個(gè)Web版Markdown編輯器: 實(shí)時(shí)預(yù)覽

      摘要:首先,我承認(rèn)標(biāo)題黨的嫌疑是逃不掉的了但是,諸君請(qǐng)繼續(xù)看下去,就會(huì)發(fā)現(xiàn)還是有干貨的源碼寫(xiě)這個(gè)編輯器的難點(diǎn)有兩個(gè)對(duì)文本進(jìn)行語(yǔ)法的解析實(shí)時(shí)檢測(cè)頁(yè)面文本變化針對(duì),我在上找到了,看就能很快地上手針對(duì),我選擇的是,因?yàn)槲铱粗辛怂碾p向綁定特性當(dāng)然數(shù)據(jù)和 首先,我承認(rèn)標(biāo)題黨的嫌疑是逃不掉的了...但是,諸君請(qǐng)繼續(xù)看下去,就會(huì)發(fā)現(xiàn)還是有干貨的 源碼:https://github.com/shuiRo...

      Mertens 評(píng)論0 收藏0
    • 12行代碼實(shí)現(xiàn)一個(gè)Web版Markdown編輯器: 實(shí)時(shí)預(yù)覽

      摘要:首先,我承認(rèn)標(biāo)題黨的嫌疑是逃不掉的了但是,諸君請(qǐng)繼續(xù)看下去,就會(huì)發(fā)現(xiàn)還是有干貨的源碼寫(xiě)這個(gè)編輯器的難點(diǎn)有兩個(gè)對(duì)文本進(jìn)行語(yǔ)法的解析實(shí)時(shí)檢測(cè)頁(yè)面文本變化針對(duì),我在上找到了,看就能很快地上手針對(duì),我選擇的是,因?yàn)槲铱粗辛怂碾p向綁定特性當(dāng)然數(shù)據(jù)和 首先,我承認(rèn)標(biāo)題黨的嫌疑是逃不掉的了...但是,諸君請(qǐng)繼續(xù)看下去,就會(huì)發(fā)現(xiàn)還是有干貨的 源碼:https://github.com/shuiRo...

      makeFoxPlay 評(píng)論0 收藏0

    發(fā)表評(píng)論

    0條評(píng)論

    chaosx110

    |高級(jí)講師

    TA的文章

    閱讀更多
    最新活動(dòng)
    閱讀需要支付1元查看
    <