Monday, October 19, 2009

HTML Only Regular Expression (REGEX)

I've run into a situation where I needed to create a regular expression for HTML tags in a string, and exclude any <non-HTML> tags. This is a rough project and this expression hasn't been completely tested, but it should give you a place to work from:


<\/*\s*(font|FONT)+(\s*|\s+[a-zA-Z0-9\s=\.""'@#\$&\(\)\+;:-]*)>


The CleanHtml method is as follows:


private string CleanHtml(string html)

{



ArrayList htmlTags = new ArrayList();

htmlTags.Add("a");

htmlTags.Add("b");

htmlTags.Add("big");

htmlTags.Add("blockquote");

htmlTags.Add("body");

htmlTags.Add("br");

htmlTags.Add("buttom");

htmlTags.Add("center");

htmlTags.Add("div");

htmlTags.Add("dt");

htmlTags.Add("em");

htmlTags.Add("fieldset");

htmlTags.Add("font");

htmlTags.Add("form");

htmlTags.Add("frame");

htmlTags.Add("h1");

htmlTags.Add("h2");

htmlTags.Add("h3");

htmlTags.Add("h4");

htmlTags.Add("h5");

htmlTags.Add("h6");

htmlTags.Add("head");

htmlTags.Add("hr");

htmlTags.Add("html");

htmlTags.Add("i");

htmlTags.Add("img");

htmlTags.Add("iframe");

htmlTags.Add("input");

htmlTags.Add("label");

htmlTags.Add("legend");

htmlTags.Add("li");

htmlTags.Add("link");

htmlTags.Add("map");

htmlTags.Add("ol");

htmlTags.Add("option");

htmlTags.Add("p");

htmlTags.Add("pre");

htmlTags.Add("q");

htmlTags.Add("s");

htmlTags.Add("small");

htmlTags.Add("span");

htmlTags.Add("strike");

htmlTags.Add("strong");

htmlTags.Add("style");

htmlTags.Add("sub");

htmlTags.Add("sup");

htmlTags.Add("table");

htmlTags.Add("tbody");

htmlTags.Add("td");

htmlTags.Add("textarea");

htmlTags.Add("tfoot");

htmlTags.Add("th");

htmlTags.Add("thead");

htmlTags.Add("title");

htmlTags.Add("tr");

htmlTags.Add("tt");

htmlTags.Add("u");

htmlTags.Add("var");


foreach (string tag in htmlTags)

{

string regularExpresion = @"<\/*\s*(" + tag.ToLower() + "|" + tag.ToUpper() + @")+(\s*|\s+[a-zA-Z=\.""'@#\$&\(\)-\+]*)>";

Regex regex = new Regex(regularExpresion, RegexOptions.IgnoreCase | RegexOptions.Multiline);

html = regex.Replace(html, "").Trim();

}


return html;

}

Check This Out!

More Links to Good Information