下面的正则表达式匹配由单个星号字符紧密包围的所有序列,这就是 Markdown 中如何强调斜体文本。我想格式化文本,包括用于强调的星号。除此之外,我确实允许在序列中使用独立的星号。例子*This is italic text\n with * in between*
。
/\*[^\*\s]([^\*]|(\*\s))*[^\*\s]\*/g
此外,在 Markdown 中,粗体文本通过双星号字符强调非常相似。为了匹配这些,我使用这个正则表达式:
/\*\*[^\*\s]([^\*]|(\*\s))*[^\*\s]\*\*/g
两者都适用,但是当一起应用时,粗体文本的内部也会被检测为斜体文本。因此,除了外部星号外,格式化文本都是粗体和斜体。为了解决这个问题,我必须表达斜体序列不允许被第二对星号包裹。
问题是[^\*]
需要任何其他字符,因此根本需要一个字符。如果上面的第一个正则表达式是附加的星号,我怎么能表示它们不匹配,同时仍然在搜索字符串的开头或结尾匹配?
作为说明,我使用 JavaScript,因此没有可用的查看。