我正在寻找一种简单的方法来测试一个字符串是否包含markdown。目前我正在考虑将字符串转换为HTML,然后测试是否有一个简单的正则表达式的HTML,但我想知道是否有更简洁的方法来做它。
这是我到目前为止所得到的
/<[a-z][\s\S]*>/i.test( markdownToHtml(string) )
答案 0 :(得分:9)
我认为你必须承认,不可能确定地知道。 Markdown从现有习俗中借用了它的语法 - 例如,斜体的下划线在Usenet上很受欢迎(尽管单个星号表示粗体,而不是斜体)。当然,早在Markdown之前,人们一直使用破折号作为明文要点的明显替代品。
虽然已经确定它是主观的,但我们现在可以开始确定一段文本包含Markdown的可能度的任务。以下是我考虑Markdown证据的一些事情,按强度递减的顺序:
以1.
开头的连续行,例如 (^|[\n\r])\s*1\.\s.*\s+1\.\s
。 (例如,请参阅这个答案背后的Markdown。)我认为这是一个死的赠品,因为甚至还有那个笑话:
这个世界上只有两种人。
1。那些了解Markdown的人。
1。那些没有的人。
链接降价,例如 \[[^]]+\]\(https?:\/\/\S+\)
。
可以找到左右对(分别用空格是左侧还是右侧)表示的双下划线或星号,例如 \s(__|\*\*)(?!\s)(.(?!\1))+(?!\s(?=\1))
。如果您希望我解释一下,请告诉我。
等等。最终,你必须拿出自己的“得分”系统来确定每件事的重量。一个很好的方法是收集一些样本输入(如果你有真实的,然后更好),手动将它们分类为是否有Markdown,并运行你的正则表达式和评分系统,看看哪些权重排序最多准确。