有没有方法来确定字符串是否包含java中的HTML标记

时间:2015-08-18 06:29:12

标签: java html string

是否有任何预定义方法说明字符串中是否包含HTML标记或字符?

4 个答案:

答案 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

这两个都已经在这里得到了更好的解释,

https://codereview.stackexchange.com/questions/112495/preventing-xss-attacks-in-a-spring-mvc-application-controller