RgbaCssValue extends AbstractBean<RgbaCssValue> { public static boolean isValid(final String rgbaString) { try { final String rgbaStringLowerCase = rgbaString.replace(" ", "") .toLowerCase(); if (rgbaStringLowerCase.startsWith("rgba(") && rgbaStringLowerCase.contains(")")) { final String[] rgbaStringParts = StringUtil .splitByComma(rgbaStringLowerCase.substring( rgbaStringLowerCase.indexOf('(') + 1, rgbaStringLowerCase.lastIndexOf(')'))); if (rgbaStringParts.length == 4) { final int r = Integer.parseInt(rgbaStringParts[0]); if (r < 0 || r > 255) { return false; } final int g = Integer.parseInt(rgbaStringParts[1]); if (g < 0 || g > 255) { return false; } final int b = Integer.parseInt(rgbaStringParts[2]); if (b < 0 || b > 255) { return false; } final float a = Float.parseFloat(rgbaStringParts[3]); return !(a < 0 || a > 1); } return false; } } catch (final NumberFormatException e) { } return false; } RgbaCssValue();  RgbaCssValue(final String rgbaCssValue);  RgbaCssValue(final RgbaCssValue rgbaCssValue);  RgbaCssValue(final int r, final int g, final int b, final float a); void setRgba(final String rgba); int getR(); void setR(final int r); int getG(); void setG(final int g); int getB(); float getA(); void setB(final int b); void setA(final float a); @Override String toString(); @Override String getValue(); static boolean isValid(final String rgbaString);  }
@Test public void testIsValid() { assertTrue(RgbaCssValue.isValid("rgba(0, 0, 0, 1)")); assertTrue(RgbaCssValue.isValid("rgba(0, 0, 0, 1)")); assertTrue(RgbaCssValue.isValid("rgba(0, 0, 0, 1)")); assertTrue(RgbaCssValue.isValid("rgba(0, 0, 0, 1)")); assertTrue(RgbaCssValue.isValid("rgba(0, 0, 100, 1)")); assertTrue(RgbaCssValue.isValid("rgba(0, 10, 100, 1)")); assertTrue(RgbaCssValue.isValid("rgba(120, 100, 10, 1)")); assertFalse(RgbaCssValue.isValid("rgba(120, 100, 10)")); assertFalse(RgbaCssValue.isValid("rgba(256, 100, 100)")); assertFalse(RgbaCssValue.isValid("rgba(100, 256, 100, 1)")); assertFalse(RgbaCssValue.isValid("rgba(100, 100, 100, 1.5)")); assertFalse(RgbaCssValue.isValid("rgba(100, 100, 100, -1)")); assertFalse(RgbaCssValue.isValid("rgba(100, 200, 256, 1)")); assertFalse(RgbaCssValue.isValid("rgba(-1, 100, 100, 1)")); assertFalse(RgbaCssValue.isValid("rgba(361, 100, 100, 1)")); assertFalse(RgbaCssValue.isValid("rgba(36df1, 100, 100, 1)")); assertFalse(RgbaCssValue.isValid("rgba(120, 10df0, 10, 1)")); assertFalse(RgbaCssValue.isValid("rgba(120, 100, 1dfd0, 1)")); }