HslCssValue extends AbstractBean<HslCssValue> { public static boolean isValid(final String hslString) { try { final String hslStringLowerCase = hslString.replace(" ", "") .toLowerCase(); if (hslStringLowerCase.startsWith("hsl(") && hslStringLowerCase.contains(")")) { final String[] hslStringParts = StringUtil .splitByComma(hslStringLowerCase.substring( hslStringLowerCase.indexOf('(') + 1, hslStringLowerCase.lastIndexOf(')'))); if (hslStringParts.length == 3) { final int r = Integer.parseInt(hslStringParts[0]); if (r < 0 || r > 360) { return false; } if (!hslStringParts[1].endsWith("%")) { return false; } final float g = Float .parseFloat(hslStringParts[1].replace("%", "")); if (g < 0 || g > 100) { return false; } if (!hslStringParts[2].endsWith("%")) { return false; } final float b = Float .parseFloat(hslStringParts[2].replace("%", "")); return !(b < 0 || b > 100); } return false; } } catch (final NumberFormatException e) { } return false; } HslCssValue();  HslCssValue(final String hslCssValue);  HslCssValue(final HslCssValue hslCssValue);  HslCssValue(final int h, final float s, final float l); void setHsl(final String hsl); int getH(); void setH(final int h); float getS(); void setS(final float s); float getL(); static CssLengthUnit getSUnit(); static CssLengthUnit getLUnit(); void setL(final float l); @Override String toString(); @Override String getValue(); static boolean isValid(final String hslString);  }
@Test public void testIsValid() { assertTrue(HslCssValue.isValid("hsl(0, 0%, 0%)")); assertTrue(HslCssValue.isValid("hsl(0, 0.0%, 0.0%)")); assertTrue(HslCssValue.isValid("hsl(0, 0.0%, 0%)")); assertTrue(HslCssValue.isValid("hsl(0, 0%, 0.0%)")); assertTrue(HslCssValue.isValid("hsl(0, 0%, 100%)")); assertTrue(HslCssValue.isValid("hsl(0, 10%, 100%)")); assertTrue(HslCssValue.isValid("hsl(120, 100%, 10%)")); assertFalse(HslCssValue.isValid("hsl(0, 10, 100%)")); assertFalse(HslCssValue.isValid("hsl(0, 10%, 100)")); assertFalse(HslCssValue.isValid("hsl(0, 10%, 101%)")); assertFalse(HslCssValue.isValid("hsl(0, 101%, 100%)")); assertFalse(HslCssValue.isValid("hsl(-1, 100%, 100%)")); assertFalse(HslCssValue.isValid("hsl(361, 100%, 100%)")); assertFalse(HslCssValue.isValid("hsl(36df1, 100%, 100%)")); assertFalse(HslCssValue.isValid("hsl(120, 10df0%, 10%)")); assertFalse(HslCssValue.isValid("hsl(120, 100%, 1dfd0%)")); }