如何测试字符串中是否包含Markdown

jwe*_*rre 6 javascript regex markdown

我正在寻找一种简单的方法来测试一个字符串是否包含markdown.目前我正在考虑将字符串转换为HTML,然后测试是否有一个简单的正则表达式的HTML,但我想知道是否有更简洁的方法来做到这一点.

这是我到目前为止所得到的

/<[a-z][\s\S]*>/i.test( markdownToHtml(string) )
Run Code Online (Sandbox Code Playgroud)

And*_*ong 10

我认为你必须接受,不可能肯定地知道.Markdown从现有的习俗中借用了它的语法 - 例如,斜体的下划线在Usenet上很受欢迎(尽管单个星号表示粗体,而不是斜体).当然,早在Markdown之前,人们一直使用破折号作为明文要点的明显替代品.

虽然已经确定它是主观的,但我们现在可以开始确定一段文本包含Markdown 的可能性程度.以下是我考虑Markdown证据的一些事情,以减少强度:

  1. 连续行开头1.,例如 (^|[\n\r])\s*1\.\s.*\s+1\.\s.(例如,请参阅这个答案后面的Markdown.)我认为这是一个死的赠品,因为甚至有这个笑话:

    这个世界上只有两种人.

    1.了解Markdown的人.

    那些没有的人.

  2. 链接降价,例如 \[[^]]+\]\(https?:\/\/\S+\).

  3. 当可以找到左右对(分别由空白是左侧还是右侧指示)时,可以找到双下划线或星号,例如 \s(__|\*\*)(?!\s)(.(?!\1))+(?!\s(?=\1)).如果您想让我解释一下,请告诉我.

等等.最终,你必须拿出自己的"得分"系统来确定每件事的重量.一个很好的方法是收集一些样本输入(如果你有真实的,然后更好),手动将它们分类为是否有Markdown,并运行你的正则表达式和评分系统,看看哪些权重排序最多准确.