簡體   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