Java正则匹配手机靓号
用于查号,匹配手机靓号的一些正则表达式
靓号规则代码
public class MatchRegexTemplateConstant {
/*======================================== 匹配11位 ========================================*/
// AAAAA 连续5个A A不包含4 匹配11位
public static final String AAAAA_EXCLUDE_FOUR_MATCH_ALL = "([0-35-9])\\1{4}";
// AAA+ 连续4个A A不包含4 匹配11位
public static final String AAAA_EXCLUDE_FOUR_MATCH_ALL = "([0-35-9])\\1{3}";
// AAA+ 连续3个A A不包含4 匹配11位
public static final String AAA_EXCLUDE_FOUR_MATCH_ALL = "([0-35-9])\\1{2}";
// AABB A或B不包含4 不连续 匹配11位
public static final String AABB_EXCLUDE_FOUR_MATCH_ALL = "([\\d]|[[0-35-9]])\\1(?!\\1)([\\d])\\2";
// ABAB A或B不包含4 不连续 匹配11位
public static final String ABAB_EXCLUDE_FOUR_MATCH_ALL = "([\\d]|[[0-35-9]])(?!\\1)([\\d])\\1\\2";
// AABA A或B不包含4 不连续 匹配11位
public static final String AABA_EXCLUDE_FOUR_MATCH_ALL = "([\\d]|[[0-35-9]])\\1(?!\\1)([\\d])\\1";
// ABAA A或B不包含4 不连续 匹配11位
public static final String ABAA_EXCLUDE_FOUR_MATCH_ALL = "([\\d]|[[0-35-9]])(?!\\1)([\\d])\\1{2}";
// ABBA A或B不包含4 不连续 匹配11位
public static final String ABBA_EXCLUDE_FOUR_MATCH_ALL = "([\\d]|[[0-35-9]])(?!\\1)([\\d])\\2\\1";
// AA A不包含4 不连续 匹配11位
public static final String AA_EXCLUDE_FOUR_MATCH_ALL = "([0-35-9])\\1+";
/*======================================== 匹配后八位 ========================================*/
// AAAAA A不包含4 匹配后8位
public static final String AAAAA_EXCLUDE_FOUR_MATCH_LAST_EIGHT = "1\\d{2,}([0-35-9])\\1{4}";
// AAA+ 连续4个A A不包含4 匹配后8位
// public static final String AAAA_EXCLUDE_FOUR_MATCH_LAST_EIGHT = "\\d{3}([0-35-9])\\1{3}";
public static final String AAAA_EXCLUDE_FOUR_MATCH_LAST_EIGHT = "1\\d{2,}([0-35-9])\\1{3}";
// AAA+ 连续3个A A不包含4 匹配后8位
public static final String AAA_EXCLUDE_FOUR_MATCH_LAST_EIGHT = "1\\d{2,}([0-35-9])\\1{2}";
// AABB A或B不包含4 不连续 匹配后8位
public static final String AABB_EXCLUDE_FOUR_MATCH_LAST_EIGHT = "1\\d{2,}([\\d]|[[0-35-9]])\\1(?!\\1)([\\d])\\2";
// ABAB A或B不包含4 不连续 匹配后8位
public static final String ABAB_EXCLUDE_FOUR_MATCH_LAST_EIGHT = "1\\d{2,}([\\d]|[[0-35-9]])(?!\\1)([\\d])\\1\\2";
// AABA A或B不包含4 不连续 匹配后8位
public static final String AABA_EXCLUDE_FOUR_MATCH_LAST_EIGHT = "1\\d{2,}([\\d]|[[0-35-9]])\\1(?!\\1)([\\d])\\1";
// ABAA A或B不包含4 不连续 匹配后8位
public static final String ABAA_EXCLUDE_FOUR_MATCH_LAST_EIGHT = "1\\d{2,}([\\d]|[[0-35-9]])(?!\\1)([\\d])\\1{2}";
// ABBA A或B不包含4 不连续 匹配后8位
public static final String ABBA_EXCLUDE_FOUR_MATCH_LAST_EIGHT = "1\\d{2,}([\\d]|[[0-35-9]])(?!\\1)([\\d])\\2\\1";
// AA A不包含4 不连续 匹配后8位
public static final String AA_EXCLUDE_FOUR_MATCH_LAST_EIGHT = "1\\d{2,}([0-35-9])\\1+";
/*======================================== 匹配后四位 ========================================*/
// AAAAA A不包含4 匹配后4位
// public static final String AAAAA_EXCLUDE_FOUR_MATCH_LAST_FOUR = "1\\d{6,}([0-35-9])\\1{4}";
// AAA+ 连续4个A A不包含4 匹配后4位
public static final String AAAA_EXCLUDE_FOUR_MATCH_LAST_FOUR = "1\\d{6,}([0-35-9])\\1{3}";
// AAA+ 连续3个A A不包含4 匹配后4位
public static final String AAA_EXCLUDE_FOUR_MATCH_LAST_FOUR = "1\\d{6,}([0-35-9])\\1{2}";
// AABB A或B不包含4 不连续 匹配后4位
public static final String AABB_EXCLUDE_FOUR_MATCH_LAST_FOUR = "1\\d{6,}([\\d]|[[0-35-9]])\\1(?!\\1)([\\d])\\2";
// ABAB A或B不包含4 不连续 匹配后4位
public static final String ABAB_EXCLUDE_FOUR_MATCH_LAST_FOUR = "1\\d{6,}([\\d]|[[0-35-9]])(?!\\1)([\\d])\\1\\2";
// AABA A或B不包含4 不连续 匹配后4位
public static final String AABA_EXCLUDE_FOUR_MATCH_LAST_FOUR = "1\\d{6,}([\\d]|[[0-35-9]])\\1(?!\\1)([\\d])\\1";
// ABAA A或B不包含4 不连续 匹配后4位
public static final String ABAA_EXCLUDE_FOUR_MATCH_LAST_FOUR = "1\\d{6,}([\\d]|[[0-35-9]])(?!\\1)([\\d])\\1{2}";
// ABBA A或B不包含4 不连续 匹配后4位
public static final String ABBA_EXCLUDE_FOUR_MATCH_LAST_FOUR = "1\\d{6,}([\\d]|[[0-35-9]])(?!\\1)([\\d])\\2\\1";
// AA A不包含4 不连续 匹配后4位
public static final String AA_EXCLUDE_FOUR_MATCH_LAST_FOUR = "1\\d{6,}([0-35-9])\\1+";
}
靓号正则表达式验证
public class RegexUtils {
private static List<String> NUMBER_LIST;
static {
NUMBER_LIST = new ArrayList<>();
// AAAAA 匹配后八位
// NUMBER_LIST.add("19211111382");
// NUMBER_LIST.add("19202222288");
// NUMBER_LIST.add("19206333338");
// NUMBER_LIST.add("19203844444");
// NUMBER_LIST.add("19203855555");
// NUMBER_LIST.add("19203826666");
// NUMBER_LIST.add("16666688352");
// NUMBER_LIST.add("18777773352");
// AAAA|AAA+ 匹配后八位
NUMBER_LIST.add("19211110382");
NUMBER_LIST.add("19202222888");
NUMBER_LIST.add("19206333388");
NUMBER_LIST.add("19203844447");
NUMBER_LIST.add("19203855557");
NUMBER_LIST.add("19203826666");
NUMBER_LIST.add("17777688352");
NUMBER_LIST.add("17888863352");
NUMBER_LIST.add("17888864444");
NUMBER_LIST.add("17888855554");
NUMBER_LIST.add("17888853333");
NUMBER_LIST.add("17888888883");
// AABB 匹配后八位
// NUMBER_LIST.add("18311225694");
// NUMBER_LIST.add("18312233694");
// NUMBER_LIST.add("18312334494");
// NUMBER_LIST.add("18312344554");
// NUMBER_LIST.add("18312345566");
// NUMBER_LIST.add("18877244566");
// NUMBER_LIST.add("18990046566");
// ABAB 匹配后八位
// NUMBER_LIST.add("17171556789");
// NUMBER_LIST.add("17121256789");
// NUMBER_LIST.add("17134346689");
// NUMBER_LIST.add("17145456689");
// NUMBER_LIST.add("17136767689");
// NUMBER_LIST.add("17136898999");
// NUMBER_LIST.add("17136808099");
// NUMBER_LIST.add("17136829797");
// AABA 匹配后八位
// NUMBER_LIST.add("15535528644");
// NUMBER_LIST.add("15112128644");
// NUMBER_LIST.add("15334358644");
// NUMBER_LIST.add("15133438226");
// NUMBER_LIST.add("15136656226");
// NUMBER_LIST.add("15136772726");
// NUMBER_LIST.add("15136788586");
// NUMBER_LIST.add("15136780090");
// AA 匹配后八位
// NUMBER_LIST.add("15536584524");
// NUMBER_LIST.add("18336584524");
// NUMBER_LIST.add("17166584524");
// NUMBER_LIST.add("17144584524");
// NUMBER_LIST.add("17135584524");
// NUMBER_LIST.add("17135774524");
// NUMBER_LIST.add("17135788524");
// NUMBER_LIST.add("17135789924");
// NUMBER_LIST.add("17135789004");
// NUMBER_LIST.add("17135789022");
}
public static void main(String[] args) {
// Pattern pattern = Pattern.compile(MatchRegexTemplateConstant.AABB_EXCLUDE_FOUR_MATCH_LAST_EIGHT);
// Pattern pattern = Pattern.compile(MatchRegexTemplateConstant.AAAA_EXCLUDE_FOUR_MATCH_LAST_EIGHT);
// Pattern pattern = Pattern.compile(MatchRegexTemplateConstant.AABB_EXCLUDE_FOUR_MATCH_LAST_EIGHT);
// Pattern pattern = Pattern.compile(MatchRegexTemplateConstant.ABAB_EXCLUDE_FOUR_MATCH_LAST_EIGHT);
Pattern pattern = Pattern.compile(MatchRegexTemplateConstant.AAAA_EXCLUDE_FOUR_MATCH_LAST_FOUR);
for (String number : NUMBER_LIST) {
boolean flag = pattern.matcher(number).find();
if (flag) {
System.out.println(number);
}
}
}
}