[英]Regex for Markdown Emphasis with asterisks * and underscores _
但升级。 发布到答案中的完美正则表达式仅涵盖带有下划线的情况,但 Markdown 也支持星号。
TLTR:我需要一个正则表达式来匹配 markdown 强调与_em_
和*em*
_
| *
)之前和之后都没有空格_
| *
)*foo_
这样的不同起点我解决问题的尝试是
\b[_\*](?![_\*\s])(.*?[^_\*\s])[_\*]\b
但不能完美地涵盖*
这是一个带有一些测试的示例。 应该只匹配_em_
和*em*
情况。
您可以使用
/([_*])(?<!(?:\1|\w).)(?![_*\s])(.*?[^_*\s])(?=\1)([_*])(?!\w|\3)/g
请参阅正则表达式演示。 详情:
([_*])
- 第 1 组: _
或*
(?<?(:.\1|\w).)
- 否定的后视:没有与第 1 组中相同的字符或任何单词 char,然后是紧邻当前位置左侧的任何字符(?![_*\s])
- 如果当前位置右侧有_
、 *
或空格,则匹配失败(.*?[^_*\s])
- 第 2 组:除换行符之外的任何零个或多个字符,尽可能少,然后是除_
、 *
或空格之外的字符(?=\1)
- 正向前瞻,需要与组 1 中相同的值立即出现在当前位置的右侧([_*])
- 第 3 组:一个_
或*
(?!\w|\3)
- 不紧跟单词 char 或与第 3 组中相同的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.