簡體   English   中英

用於匹配 markdown 中的主題中斷的正則表達式

[英]Regex for matching thematic breaks in markdown

我正在嘗試制作一個匹配字符串中所有主題中斷的正則表達式,以便在 JavaScript 的String.split function 中使用。

主題休息可以是:

  • 連字符: ---
  • 星號: ***
  • 下划線: ___

連字符、星號或下划線之間可以有空格,但不能混合匹配,例如這是無效的--*

完整規格: https://spec.commonmark.org/0.30/#thematic-breaks

這是我嘗試過的: /[-*_]{3,}/g但這與中間有空格的不匹配,如果我在其中添加空格,它將匹配諸如--這是不可取的東西。 我也想過首先去除空白,但我想將它全部放入 RegEx 中。

這可能嗎? 如何?

您可以使用此正則表達式:

/^[ ]{0,3}([-*_])\s*\1\s*\1+\s*$/gm

說明

^ - 匹配行首

[ ]{0,3} - 匹配可選的最多 3 個空格

([-*_]) - 匹配-*_並將其放在一個組中

\s*\1\s*\1+\s* - 匹配可選的空格和來自第一組的字符兩次

$ - 匹配行尾

編輯(來自評論):

/^[ ]{0,3}([-*_])\s*(?:\1\s*){2,}$/gm

它現在支持重復模式,只要使用的字符相同。

本組:

(?:\1\s*)重復 2 次或更多次。

匹配示例:

***
  - - -                   
 __            _
 ** * ** * ** * **

不匹配的例子:

*-_
abc
          +++

我應該補充一點,我使用\s盡管規范說“空格或制表符”。 由於這必須逐行解析, \s應該是安全的。

您可以在此處測試正則表達式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM