How to validate Hex color code with regular expression
Hexadecimal Color Code Regular Expression Pattern
^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
Description
^ #start of the line # # must constains a "#" symbols ( # start of group #1 [A-Fa-f0-9]{6} # any strings in the list, with length of 6 | # ..or [A-Fa-f0-9]{3} # any strings in the list, with length of 3 ) # end of group #1 $ #end of the line
Whole combination is means, string must start with a “#” symbol , follow by a letter from “a” to “f”, “A” to “Z” or a digit from “0″ to 9″ with exactly 6 or 3 length. This regular expression pattern is very useful for the Hexadecimal web colors code checking.
Java Regular Expression Example
package com.mkyong.regex; import java.util.regex.Matcher; import java.util.regex.Pattern; public class HexValidator{ private Pattern pattern; private Matcher matcher; private static final String HEX_PATTERN = "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"; public HexValidator(){ pattern = Pattern.compile(HEX_PATTERN); } /** * Validate hex with regular expression * @param hex hex for validation * @return true valid hex, false invalid hex */ public boolean validate(final String hex){ matcher = pattern.matcher(hex); return matcher.matches(); } }
Hex code that match:
1. “#1f1f1F”, “#AFAFAF”,”#1AFFa1″,”#222fff”, “#F00″, “#F00″
Hex code that doesn’t match:
1. “123456″ – must start with a “#” symbol
2. “#afafah” – “h” is not allow, valid letter from “a” to “f”
3. “#123abce” – either 6 length or 3 length
4. “aFaE3f” – must start with a “#” symbol, either 6 length or 3 length
5. “F00″ – must start with a “#” symbol
6. “#afaf” – either 6 length or 3 length
7. “#F0h” – “h” is not allow, valid letter from “a” to “f”
Unit Test – HexValidator
package com.mkyong.regex; import org.testng.Assert; import org.testng.annotations.*; /** * Hex validator Testing * @author mkyong * */ public class HexValidatorTest { private HexValidator hexValidator; @BeforeClass public void initData(){ hexValidator = new HexValidator(); } @DataProvider public Object[][] ValidHexProvider() { return new Object[][]{ {new String[] { "#1f1f1F", "#AFAFAF","#1AFFa1","#222fff", "#F00" }} }; } @DataProvider public Object[][] InvalidHexProvider() { return new Object[][]{ {new String[] { "123456","#afafah","#123abce","aFaE3f", "F00","#afaf", "#F0h" }} }; } @Test(dataProvider = "ValidHexProvider") public void ValidHexTest(String[] hex) { for(String temp : hex){ boolean valid = hexValidator.validate(temp); System.out.println("Hex is valid : " + temp + " , " + valid); Assert.assertEquals(true, valid); } } @Test(dataProvider = "InvalidHexProvider", dependsOnMethods="ValidHexTest") public void InValidHexTest(String[] hex) { for(String temp : hex){ boolean valid = hexValidator.validate(temp); System.out.println("Hex is valid : " + temp + " , " + valid); Assert.assertEquals(false, valid); } } }
Unit Test – Result
Hex is valid : #1f1f1F , true
Hex is valid : #AFAFAF , true
Hex is valid : #1AFFa1 , true
Hex is valid : #222fff , true
Hex is valid : #F00 , true
Hex is valid : 123456 , false
Hex is valid : #afafah , false
Hex is valid : #123abce , false
Hex is valid : aFaE3f , false
Hex is valid : F00 , false
Hex is valid : #afaf , false
Hex is valid : #F0h , false
PASSED: ValidHexTest([Ljava.lang.String;@1a626f)
PASSED: InValidHexTest([Ljava.lang.String;@e5855a)
===============================================
com.mkyong.regex.HexValidatorTest
Tests run: 2, Failures: 0, Skips: 0
===============================================
===============================================
mkyong
Total tests run: 2, Failures: 0, Skips: 0
===============================================Reference
http://en.wikipedia.org/wiki/Web_colors
Want to learn more about regular expression? Highly recommend this best and classic book – “Mastering Regular Expression”
[...] Hex color code regular expression Hex color code regular expression example in Java and unit tested with TestNG. ^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$ [...]
[...] ==> See the explanation and example here [...]