我正在尝试制作一个RegEx,它匹配字符串中的所有主题中断,以便在JavaScript的String.split
函数中使用。
专题休息可以是:
- 连字符:
---
- 星号:
***
- 下划线:
___
连字符、星号或下划线之间可以有空格,但不能混用,例如这不是有效的--*
。
完整规格:https://spec.commonmark.org/0.30/#thematic-破坏
以下是我尝试过的:/[-*_]{3,}/g
,但它与中间有空白的不匹配,如果我在其中添加一个空格,它将与--
之类的东西匹配,这是不可取的。我也想过先把空白分条,但我想把它全部放入RegEx中。
这可能吗?如何?
您可以使用以下正则表达式:
/^[ ]{0,3}([-*_])s*1s*1+s*$/gm
解释:
^
-线路的匹配开始
[ ]{0,3}
-匹配可选最多3个空格
([-*_])
-匹配-
、*
或_
,并将其放入组
s*1s*1+s*
-匹配可选空白和第一组字符两次
$
-匹配线路末端
编辑(来自评论(:
/^[ ]{0,3}([-*_])s*(?:1s*){2,}$/gm
现在,只要使用的字符相同,它就支持重复模式。
此组:
CCD_ 16被重复2次或更多次。
匹配示例:
***
- - -
__ _
** * ** * ** * **
不匹配示例:
*-_
abc
+++
我应该补充一点,我使用s
,尽管规范上写着"空格或制表符"。由于必须逐行解析,因此s
应该是安全的。
您可以在此处测试正则表达式。