我正在处理与markdown相关的一些匹配(JavaScript的正则表达式)。如果_
或*
出现一次(在开头,结尾或后面并且前面有其他字符或空格),我需要匹配,如果发生3 _
或{{1 (*
或___
)。但不是两个。
所以匹配为***
,但*
但不是***
或**a
匹配**_
。
所以我基本上想要匹配,如果一个元素在markdown(_
)或粗体和斜体(*italic*
)中是斜体。它也可以是***bold italic***
。
我现在在这里,但它确实不起作用。另外,如果无论如何可能,我希望它只与2匹配,甚至更好只匹配一个正则表达式。
_** italic bold **_
//编辑
匹配(^|[^_])_([^_]|$)
(^|[^_])_([^_]|$)
(^|[^\*])\*([^\*]|$)
(^|[^\*])\*\*\*([^\*]|$)
*****
不匹配*em*
***em***
__*em*
__*em*__
word*em*word
*****
答案 0 :(得分:0)
基于我的理解,我相信这个正则表达式应该有效:
(?:^|[^*])_*([*](?:[*]{2})*)?[^*_]+\1_*(?:[^*]|$)