[英]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.