RgbCssValue extends AbstractBean<RgbCssValue> { public static boolean isValid(final String rgbString) { try { final String rgbStringLowerCase = rgbString.replace(" ", "") .toLowerCase(); if (rgbStringLowerCase.startsWith("rgb(") && rgbStringLowerCase.contains(")")) { final String[] rgbStringParts = StringUtil .splitByComma(rgbStringLowerCase.substring( rgbStringLowerCase.indexOf('(') + 1, rgbStringLowerCase.lastIndexOf(')'))); if (rgbStringParts.length == 3) { final int r = Integer.parseInt(rgbStringParts[0]); if (r < 0 || r > 255) { return false; } final int g = Integer.parseInt(rgbStringParts[1]); if (g < 0 || g > 255) { return false; } final int b = Integer.parseInt(rgbStringParts[2]); return !(b < 0 || b > 255); } return false; } } catch (final NumberFormatException e) { } return false; } RgbCssValue();  RgbCssValue(final String rgbCssValue);  RgbCssValue(final RgbCssValue rgbCssValue);  RgbCssValue(final int r, final int g, final int b); void setRgb(final String rgb); int getR(); void setR(final int r); int getG(); void setG(final int g); int getB(); void setB(final int b); @Override String toString(); @Override String getValue(); static boolean isValid(final String rgbString);  }
@Test public void testIsValid() { assertTrue(RgbCssValue.isValid("rgb(0, 0, 0)")); assertTrue(RgbCssValue.isValid("rgb(0, 0, 0)")); assertTrue(RgbCssValue.isValid("rgb(0, 0, 0)")); assertTrue(RgbCssValue.isValid("rgb(0, 0, 0)")); assertTrue(RgbCssValue.isValid("rgb(0, 0, 100)")); assertTrue(RgbCssValue.isValid("rgb(0, 10, 100)")); assertTrue(RgbCssValue.isValid("rgb(120, 100, 10)")); assertFalse(RgbCssValue.isValid("rgb(256, 100, 100)")); assertFalse(RgbCssValue.isValid("rgb(100, 256, 100)")); assertFalse(RgbCssValue.isValid("rgb(100, 200, 256)")); assertFalse(RgbCssValue.isValid("rgb(-1, 100, 100)")); assertFalse(RgbCssValue.isValid("rgb(361, 100, 100)")); assertFalse(RgbCssValue.isValid("rgb(36df1, 100, 100)")); assertFalse(RgbCssValue.isValid("rgb(120, 10df0, 10)")); assertFalse(RgbCssValue.isValid("rgb(120, 100, 1dfd0)")); }