为什么此正则表达式与Java中的这种颜色不匹配?

问题描述 投票:0回答:1

常见的十六进制颜色代码正则表达式与颜色#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)一样。

java regex hex
1个回答
0
投票

不匹配时打印消息。包括引号,以便查看是否有空格。

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.