标记正则表达式帮助,双重符号和单个符号

时间:2016-04-26 19:54:30

标签: javascript regex markdown

背景
我一直在寻找这个答案。我能找到的最接近的代码来自Stack Edit,特别是Markdown.Converter.js脚本;复制如下。这是一个相当重要的正则表达式,但我的查找**的正则表达式几乎发生在1/5的步骤中,我不需要这么多额外的支持。

function _DoItalicsAndBold(text) {
   // <strong> must go first:
   text = text.replace(/([\W_]|^)(\*\*|__)(?=\S)([^\r]*?\S[\*_]*)\2([\W_]|$)/g,"$1<strong>$3</strong>$4");
   text = text.replace(/([\W_]|^)(\*|_)(?=\S)([^\r\*_]*?\S)\2([\W_]|$)/g,"$1<em>$3</em>$4");
   return text;
}

问题
我正在尝试创建自己的非常简单的降价脚本来进行这些转换:

* ---&gt;斜体
** ---&gt;大胆
__ ---&gt;下划线

到目前为止,我可以使用此正则表达式找到**(两颗星,粗体文本)的所有用法:

/(\*\*)(?:(?=(\\?))\2.)*?\1/g

然而,我不能为我的生活弄清楚如何只用一个正则表达式匹配*(单星,斜体文本)。如果我决定更进一步,我可能也必须区分_和__。

有人能指出我正确的方向,如何正确编写将要执行此操作的正则表达式吗?

更新/澄清OP的问题
我知道解析器,我担心这个问题会脱离这一点。我不是要求解析器帮助(但我欢迎并欣赏它)我正在寻找正则表达式帮助。如果这有助于人们摆脱解析器答案,这是另一个例子。假设我有一个应用程序,在双引号中查找字符串并将它们拉出来制作标签或其他东西。我想避免巨魔用户试图弄乱我或偷偷摸摸的东西,所以如果他们使用双引号,我应该忽略它,而不是打扰制作标签。例如:

  

在这个“句子”中,我的正则表达式与“句子”相匹配,并使用其他代码,我没有向您展示仅提取单词:句子。

现在,如果有人双引号,我会忽略它,因为找不到匹配项。这意味着在这种情况下不应将内部单词视为匹配。

  

在这个“”句子中“”我在单词句子周围有两个双引号,现在应该完全忽略它。我甚至不关心忽略外部双引号和内部双引号匹配。在这种情况下我不想匹配。

0 个答案:

没有答案