我正在寻找一种简单的方法来测试字符串是否包含markdown。目前,我正在考虑将字符串转换为HTML,然后使用简单的正则表达式测试是否有html,但是我想知道是否有更简洁的方法来执行此操作。
这是我到目前为止所得到的
/<[a-z][\s\S]*>/i.test( markdownToHtml(string) )
我认为您必须接受不可能肯定地知道。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,并运行正则表达式和评分系统以查看权重最大的分类准确。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句