繁体   English   中英

Markdown 的正则表达式用星号 * 和下划线 _ 强调

[英]Regex for Markdown Emphasis with asterisks * and underscores _

不是Markdown 强调的正则表达式的重复

但升级。 发布到答案中的完美正则表达式仅涵盖带有下划线的情况,但 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM