如何通过手机号识别所属运营商,移动、联通还是电信,2022年新增了广电运营上号段192。
网上找缺斤少两,最后还是得自己来,细节就不说了,直接上代码。
@Test
void phoneOperator() {
String mobile = "19213149699";
// 广电
String gdcc = "192\\d{8}";
// 移动
String cmcc = "(^1(3[5-9]|4[78]|5[0-27-9]|65|7[28]|8[2-478]|9[578])\\d{8}$)|(^134[0-8]\\d{7}$)|(^1440\\d{7}$)|(^170[356]\\d{7}$)";
// 联通
String cucc = "(^1(3[0-2]|4[56]|5[56]|6[67]|7[156]|8[56]|96)\\d{8}$)|(^170[47-9]\\d{7}$)";
// 电信
String ctcc = "(^1(33|49|53|62|7[37]|8[019]|9[0139])\\d{8}$)|(^1349\\d{7}$)|(^1410\\d{7}$)|(^17(0[012]|40)\\d{7}$)";
Pattern regexpCmcc = Pattern.compile(cmcc);
Pattern regexpCucc = Pattern.compile(cucc);
Pattern regexpCtcc = Pattern.compile(ctcc);
Pattern regexpGdcc = Pattern.compile(gdcc);
if (regexpCmcc.matcher(mobile).matches()) {
log.info("{} is cmcc",mobile);
}
if (regexpCucc.matcher(mobile).matches()) {
log.info("{} is cucc",mobile);
}
if (regexpCtcc.matcher(mobile).matches()) {
log.info("{} is ctcc",mobile);
}
if (regexpGdcc.matcher(mobile).matches()) {
log.info("{} is gdcc",mobile);
}
}