我想使用java验证HTML标签及其内容。验证应确保所有html标记都正确关闭。标签创建区域没有错误。例如
<div id="divIdvalue'></div>
或
<span id\="spanIdval" ,></span>
我需要验证这类事情。谷歌搜索时,我得到了一个像这样的正则表达式
<(\"[^\"]*\"|'[^']*'|[^'\">])*>
但它不会验证所有HTML是否已关闭?那么如何添加它呢。
我的示例代码附在下面。请帮帮我。
package com.test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class htmlValidator {
private static Pattern pattern;
private static Matcher matcher;
private static final String HTML_TAG_PATTERN = "<(\"[^\"]*\"|'[^']*'|[^'\">])*>";
public void HTMLTagValidator(){
pattern = Pattern.compile(HTML_TAG_PATTERN);
}
public static boolean validate(final String tag){
matcher = pattern.matcher(tag);
return matcher.matches();
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String htmlStr = "<div> <p id=/'bb'>This is first paragraph. This is first paragraph. </p> <span id='spanId'>Yes this is spab</span></div>";
System.out.println("htmlStr :- "+htmlStr);
validate(htmlStr);
}
}
答案 0 :(得分:1)
如果您确实需要使用纯Java解析HTML,则可以使用许多open source options。但是,我建议使用W3C来验证您的语法,因为根据定义它们将更正确地使用正确的用法。祝你的项目好运。
答案 1 :(得分:1)
<(\"[^\"]*\"|'[^']*'|[^'\">])*>
是单个标签,
<(\"[^\"]*\"|'[^']*'|[^'\">])*>(.*<(\"[^\"]*\"|'[^']*'|[^'\">])*>)?
用于一对标签或单个标签。
然而,复杂的案例不能通过单行正则表达式进行验证。