Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
210 views
in Technique[技术] by (71.8m points)

java - How to find if String contains html data?

How do I find if a string contains HTML data or not? The user provides input via web interface and it's quite possible he could have used either a simple text or used HTML formatting.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

I know this is an old question but I ran into it and was looking for something more comprehensive that could detect things like HTML entities and would ignore other uses of < and > symbols. I came up with the following class that works well.

You can play with it live at http://ideone.com/HakdHo

I also uploaded this to GitHub with a bunch of JUnit tests.

package org.github;

/**
 * Detect HTML markup in a string
 * This will detect tags or entities
 *
 * @author [email protected] - David H. Bennett
 *
 */

import java.util.regex.Pattern;

public class DetectHtml
{
    // adapted from post by Phil Haack and modified to match better
    public final static String tagStart=
        "\<\w+((\s+\w+(\s*\=\s*(?:".*?"|'.*?'|[^'"\>\s]+))?)+\s*|\s*)\>";
    public final static String tagEnd=
        "\</\w+\>";
    public final static String tagSelfClosing=
        "\<\w+((\s+\w+(\s*\=\s*(?:".*?"|'.*?'|[^'"\>\s]+))?)+\s*|\s*)/\>";
    public final static String htmlEntity=
        "&[a-zA-Z][a-zA-Z0-9]+;";
    public final static Pattern htmlPattern=Pattern.compile(
      "("+tagStart+".*"+tagEnd+")|("+tagSelfClosing+")|("+htmlEntity+")",
      Pattern.DOTALL
    );

    /**
     * Will return true if s contains HTML markup tags or entities.
     *
     * @param s String to test
     * @return true if string contains HTML
     */
    public static boolean isHtml(String s) {
        boolean ret=false;
        if (s != null) {
            ret=htmlPattern.matcher(s).find();
        }
        return ret;
    }

}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...