サンプル
NumericCountValidator.java
/** Rule:数字がX個あるか */ public class NumericCountValidator extends RuleAbstract { public static void main(String[] args) { NumericValidator validator = new NumericValidator(); validator.setNumber(2); // 数字が2個あるか System.out.println("eww9skdh3ks0ewke : " + validator.isValid("eww9skdh3ks0ewke")); // OK(数字3個) System.out.println("8w9skdhewke : " + validator.isValid("8w9skdhewke")); // OK(数字2個) System.out.println("eww9skdhewke : " + validator.isValid("eww9skdhewke")); // NG(数字1個) System.out.println("sisuskkdhewke : " + validator.isValid("sisuskkdhewke")); // NG(数字0個) } /** 数字がX個ある */ private int number; /** * @param number * the number to set */ public void setNumber(int number) { this.number = number; } public boolean isValid(String targetValue) { return this.isValid(targetValue, "[0-9]+", this.number); } private boolean isValid(String targetValue, String regex, int number) { Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(targetValue); int count = 0; while (matcher.find()) { count++; if (count >= number) { return true; } } return false; } }
出力結果
eww9skdh3ks0ewke : true 8w9skdhewke : true eww9skdhewke : false sisuskkdhewke : false