是否有任何预定义方法说明字符串中是否包含HTML标记或字符?
答案 0 :(得分:5)
您可以尝试使用正则表达式,例如
private static final String HTML_PATTERN = "<(\"[^\"]*\"|'[^']*'|[^'\">])*>";
private Pattern pattern = Pattern.compile(HTML_PATTERN);
public boolean hasHTMLTags(String text){
Matcher matcher = pattern.matcher(text);
return matcher.find();
}
答案 1 :(得分:1)
使用正则表达式搜索或识别String中的HTML标记。
boolean containsHTMLTag = stringHtml.matches(".*\\<[^>]+>.*");
或者蒂姆建议使用如下的Jsoup: -
String textOfHtmlString = Jsoup.parse(htmlString).text();
boolean containedHTMLTag = !textOfHtmlString.equals(htmlString);
答案 2 :(得分:0)
你应该使用find()
private static final String HTML_TAG_PATTERN = "<(\"[^\"]*\"|'[^']*'|[^'\">])*>";
static Pattern htmlValidator = TextUtils.isEmpty(HTML_TAG_PATTERN) ? null:Pattern.compile(HTML_TAG_PATTERN);
public static boolean validateHtml(final String text){
if(htmlValidator !=null)
return htmlValidator.matcher(text).find();
return false;
}
答案 3 :(得分:0)
用正则表达式解析字符串以搜索HTML(在我的情况下,是为了防止XSS攻击相关的输入)不是正确的方法。
一个好方法是使用Spring HtmlUtils
这两个都已经在这里得到了更好的解释,