常见的十六进制颜色代码正则表达式与颜色#79bff7很好,但是在我的Java程序中它失败。
我使用的颜色验证器只是HexValidator的副本。
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();
}
}
我希望看到特定的颜色匹配,就像在线正则表达式匹配器(例如regex101)一样。
不匹配时打印消息。包括引号,以便查看是否有空格。
public boolean validate(final String hex){
matcher = pattern.matcher(hex);
boolean matches = matcher.matches();
if (!matches)
System.out.println ("not a hex color string: \"" + hex + "\" length: " + hex.length());
return matches;
}