What is you favourite approach to check if a HTML COLOR is valid?

Exception handling is heavy and should be used as a last resort and only for actual exceptions. Try this. It checks for a valid html hex color and then tries named colors.

protected static bool CheckValidFormatHtmlColor(string inputColor)
{
       //regex from http://stackoverflow.com/a/1636354/2343
       if (Regex.Match(inputColor, "^#(?:[0-9a-fA-F]{3}){1,2}$").Success)
           return true;

       var result = System.Drawing.Color.FromName(inputColor);
       return result.IsKnownColor;
}

My gut says to mistrust Microsoft when it comes to getting something like an HTML colour code right. I've found what appears to be the source code to the class you are using and it accepts a lot of things that are not HTML colours.

A regex then checking against a list sounds like the sensible way forward for this.

After trimming white space, check if it matches /^#[a-fA-F0-9]{6}$/, if it doesn't, compare it to the list of 16 colours that appear in HTML.


One regex for all, just for the fun. The i at the end is for case insensitivity. Probably not fast, but "one shot".

HTML colors

/^(#[a-f0-9]{6}|black|green|silver|gray|olive|white|yellow|maroon|navy|red|blue|purple|teal|fuchsia|aqua)$/i

CSS colors

/^(#[a-f0-9]{6}|#[a-f0-9]{3}|(rgb|hsl) *\( *[0-9]{1,3}%? *, *[0-9]{1,3}%? *, *[0-9]{1,3}%? *\)|(rgba|hsla) *\( *[0-9]{1,3}%? *, *[0-9]{1,3}%? *, *[0-9]{1,3}%? *, *[0-9]{1,3}%? *\)|black|green|silver|gray|olive|white|yellow|maroon|navy|red|blue|purple|teal|fuchsia|aqua)$/i

Tags:

C#

Html

Asp.Net