import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*** 用于专门匹配手机号与座机号工具类*/
public class NumberUtil {//用于匹配手机号码private final static String REGEX_MOBILEPHONE = "^0?1[3456789]\\d{9}$";//11-12//用于匹配固定电话号码private final static String REGEX_FIXEDPHONE = "^(010|02\\d|0[3-9]\\d{2})?\\d{6,8}$";//用于获取固定电话中的区号private final static String REGEX_ZIPCODE = "^(010|02\\d|0[3-9]\\d{2})\\d{6,8}$";private static Pattern PATTERN_MOBILEPHONE;private static Pattern PATTERN_FIXEDPHONE;private static Pattern PATTERN_ZIPCODE;//    手机号码规则:匹配的号码是第一个为1,第二位为3458,长度为11的号码,前面可以有0.该规则基本满足现有手机的号段。
//    固定电话规则:根据现有的区号规则总结归纳出来的,区号规则是010只有一个、02开头的三位数、03到09开头的四位数。同样,区号也是可选的,真实的号码长度在6到8位。static {PATTERN_FIXEDPHONE = Pattern.compile(REGEX_FIXEDPHONE);PATTERN_MOBILEPHONE = Pattern.compile(REGEX_MOBILEPHONE);PATTERN_ZIPCODE = Pattern.compile(REGEX_ZIPCODE);}/*** 判断是否为手机号码** @param number 手机号码* @return*/public static boolean isCellPhone(String number) {Matcher match = PATTERN_MOBILEPHONE.matcher(number);return match.matches();}/*** 判断是否为固定电话号码** @param number 固定电话号码* @return*/public static boolean isFixedPhone(String number) {Matcher match = PATTERN_FIXEDPHONE.matcher(number);return match.matches();}/*** 获取固定号码号码中的区号** @param strNumber* @return*/public static String getZipFromHomephone(String strNumber) {Matcher matcher = PATTERN_ZIPCODE.matcher(strNumber);if (matcher.find()) {return matcher.group(1);}return null;}/*** 检查号码类型,并获取号码前缀,手机获取前7位,固话获取区号** @param* @return*/public static Number checkNumber(String _number) {String number = _number;Number rtNum = null;if (number != null && number.length() > 0) {if (isCellPhone(number)) {//如果手机号码以0开始,则去掉0if (number.charAt(0) == '0') {number = number.substring(1);}rtNum = new Number(PhoneType.CELLPHONE, number.substring(0, 7), _number);} else if (isFixedPhone(number)) {//获取区号String zipCode = getZipFromHomephone(number);rtNum = new Number(PhoneType.FIXEDPHONE, zipCode, _number);} else {rtNum = new Number(PhoneType.INVALIDPHONE, null, _number);}}return rtNum;}public enum PhoneType {/*** 手机*/CELLPHONE,/*** 固定电话*/FIXEDPHONE,/*** 非法格式号码*/INVALIDPHONE}public static class Number {private PhoneType type;/*** 如果是手机号码,则该字段存储的是手机号码 前七位;如果是固定电话,则该字段存储的是区号*/private String code;private String number;public Number(PhoneType _type, String _code, String _number) {this.type = _type;this.code = _code;this.number = _number;}public PhoneType getType() {return type;}public String getCode() {return code;}public String getNumber() {return number;}public String toString() {return String.format("[number:%s, type:%s, code:%s]", number, type.name(), code);}}public static void main(String[] args) {Number num = checkNumber("013951699549");System.out.println(num);num = checkNumber("13951699549");System.out.println(num);num = checkNumber("051687189099");System.out.println(num);num = checkNumber("02552160433");System.out.println(num);num = checkNumber("52160433");System.out.println(num);//[number:013951699549, type:CELLPHONE, code:1395169]//[number:13951699549, type:CELLPHONE, code:1395169]//[number:051687189099, type:FIXEDPHONE, code:0516]//[number:02552160433, type:FIXEDPHONE, code:025]//[number:52160433, type:FIXEDPHONE, code:null]}
}

【Java工具类】用于专门匹配手机号与座机号工具类相关推荐

  1. iOS开发实战之手机号、座机号正则验证

    早些时候一直在写微信小程序..NETWeb Api相关的教程,写教程就像人生一样,走走停停,思前想后,有什么得失,有什么可以总结与提高. 昨天晚些时候基本上被马保国对阵拳击的视频给刷屏了,顺便在这里发 ...

  2. 用户名、邮箱、手机号、座机号、身份证号、邮政编码、税务登记号、图片等正则表达式

    用户名.邮箱.手机号.座机号.身份证号.邮政编码.税务登记号等正则表达式,这几个表达式在用户注册或者登陆的时候用的比较多,要细细研究需要记住每一个符号所表达的意思,在这里专门记录下来 //数字或字母长 ...

  3. php 验证座机,验证国内手机号与座机号的正则表达式

    这次给大家带来验证国内手机号与座机号的正则表达式,验证国内手机号与座机号的正则表达式的注意事项有哪些,下面就是实战案例,一起来看一下.验证手机号:^((13[0-9])|(14[7])|(15[^4, ...

  4. 同时校验手机号和座机号

    文章目录 同时校验手机号和座机号 一.使用实例 同时校验手机号和座机号 filter方法是js中常用的方法: 提示:以下是本篇文章正文内容,下面案例可供参考 一.使用实例 1.同时校验手机号和座机号 ...

  5. 验证手机号和座机号规则

    /*** 严格认证11位手机号和座机号 Mr.DJ*/ const MOBILE_PATTERNS_MORE='/^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/'; 这个 ...

  6. 前端校验用户输入的手机号或者座机号是否符合格式

    效果: 输入的手机号:15878452358324 输入座机号: 012-15845233223 代码: 因为联系电话非必填项,所以在点击提交之前去校验的时候,如果填写了手机号或者座机号则去校验,没有 ...

  7. 最佳工具!用于机器学习的10种文本注解工具和服务

    全文共1478字,预计学习时长4分钟 图源:Google 从搜索引擎.情绪分析到虚拟助手和聊天机器人,文本注解工具和服务应用广泛. 在人工智能研发行业,注解数据如同黄金,而大量优质注解数据则犹如一座金 ...

  8. el-input手机号,座机号,邮箱,银行卡,邮编,传真验证

    一.手机号验证 html部分: data中表单验证: addRules: {phoneNumber: [{ validator: this.checkPhone,required: true,trig ...

  9. 手机号和座机号正则表达式

    phoneInputBlur (e, record) {const { value } = e.targetconst reg = /^1([358][0-9]|4[579]|66|7[0135678 ...

  10. Excel从手机号和座机号混合文本中提取手机号码

    如下图为某公司通讯录,B列部分单元格同时含有手机号码和座机号码.现在想要将B列单元格中的手机号码提取出来. 选中B列数据单元格 点击下图选项(Excel工具箱,百度即可了解详细的下载安装信息,本文这里 ...

最新文章

  1. “pybind11::module_::def”: 未找到匹配的重载函数
  2. Express2.X迁移至3.X注意事项
  3. python朗读网页-早上起床后不想动,让 Python 来帮你朗读网页吧
  4. 强大的SPGridView
  5. 到底应该用3*3的卷积核还是5*5的卷积核
  6. Kaggle : Using a Convolutional Neural Network for classifying Cats vs Dogs
  7. Java监视器绑定的超人
  8. 软件测试框架课程考试_那考试准备课程值得吗?
  9. SqlServer查询语句中用到的锁
  10. MySQL常用命令大全
  11. MySQL读写分离详解(一)——基本原理
  12. HDOJ2027统计元音
  13. python自动机器学习库auto_ml模块
  14. apfs扩容_小米2020pro增强版 黑苹果 最新教程
  15. 江苏大学linux实验报告,正弦波振荡电路实验报告.doc
  16. C/C++程序员工作面试的秘密
  17. 公司25k招了一个测试员不会自动化,试用期没过就赶走了...
  18. 熊猫烧香作者李俊自主创业开网络安全公司
  19. Java 基础常见面试题(持续更新)
  20. C++难学吗?为什么难学?如何去学?

热门文章

  1. java 裁剪图片_java实现的图片裁剪功能示例
  2. Python运算(四)random模块secrets模块
  3. csgo怎么一直连接服务器失败,CSGO提示连接到官方任意服务器失败怎么办?
  4. 理解Celery的worker
  5. 使用diskpart命令修复损坏的U盘
  6. 联想LENOVO K2450升级(或全新安装)Windows 10后不能正常关机的解决方案
  7. 调用百度地图api接口并点击marker也就是标点跳转页面
  8. omv安装mysql插件_Openmediavault第三方插件安装教程
  9. 《战狼2》,我可以说点什么
  10. python爬虫爬取《战狼Ⅱ》影评