检查HTML标记是否平衡,并且在Java中仅使用白名单标记

检查HTML标记是否平衡,并且在Java中仅使用白名单标记,java,html,validation,Java,Html,Validation,我将HTML作为用户的输入,并将其作为字符串存储在JAVA中。 用户输入的示例HTML如下所示: <p> Follow these instructions: <br><br> <code> Some code here </code> <p style='color:red;'> WARNING: Some warning here </p> </p> 我想验证是否所

我将HTML作为用户的输入,并将其作为字符串存储在JAVA中。 用户输入的示例HTML如下所示:

<p>
 Follow these instructions: 
 <br><br>
   <code>
    Some code here
   </code>
  <p style='color:red;'> WARNING: Some warning here </p>
</p>

我想验证是否所有标记都是平衡的,并且HTML中只存在p、br和code标记。要做到这一点似乎没有简单的方法。我已经研究了JTidy,但它提供了其他不必要的警告,如未指定doctype,而HTML无效。除此之外,如果标记不平衡,JSoup也不会给出错误(尽管它可以用于检查是否只使用了白名单标记)。是否有任何库或简单的方法来检查java中HTML的有效性?

如果您对不使用外部库感到满意,那么简单地计算所有标记的出现次数并检查打开和关闭标记的数量是否合适,以及其中是否有您不想要的标记,应该不难。一些正则表达式,比如
/]+)
应该可以做到这一点。检查@VictorGubin,正如我在问题中已经说过的,我找不到任何方法来检查HTML标记在Jsoup中是否平衡