■ はじめに
今回は、JavaのMatcher.find()を使って 数字/文字の出現回数を数えることを行う。
【1】サンプル
例1:パスワードの強度を測る
* パスワードの強度を測るのに、数字/文字の出現回数を数えることがある それを正規表現を使って実現する
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
参考文献
http://blanktar.jp/blog/2015/11/java-charactor-count.html
関連記事
正規表現 ~ 文字列の抽出 ~
https://dk521123.hatenablog.com/entry/2016/12/30/142128
正規表現 ~ 不要文字除去 / 対象文字のみ抽出 ~
https://dk521123.hatenablog.com/entry/2017/01/19/213612
正規表現 ~ 複雑な文字列置き換え ~
https://dk521123.hatenablog.com/entry/2015/04/08/000052
正規表現 全般
https://dk521123.hatenablog.com/entry/2011/09/10/235712