package cn.fraudmetrix.octopus.horai.biz.utils;

 import org.springframework.util.StringUtils;

 import java.util.regex.Matcher;
import java.util.regex.Pattern; /**
* Author: hunt
* Date: 2016-11-17 00:15
* Version: 1.0.0
*/
public class PhoneUtils {
/**
* 是否是手机
*
* @param number
* @return
*/
public static boolean isPhoneNumber(String number) {
String rgx = "^(0|86|\\+86|086)?1[34578]\\d{9}$";
Pattern p = Pattern.compile(rgx);
Matcher m = p.matcher(number);
return m.matches();
} /**
* 是否是固话
*
* @param number
* @return
*/
public static boolean isFixNumber(String number) {
String rgx = "^(010|02\\d|0[3-9]\\d{2})?\\d{6,8}$";
Pattern p = Pattern.compile(rgx);
Matcher m = p.matcher(number);
return m.matches();
} /**
* 格式话电话号码
*
* @param originNumber
* @return
*/
public static String getFormatPhoneNumer(String originNumber) {
String formatNumber = originNumber;
if (PhoneUtils.isPhoneNumber(originNumber)) {
formatNumber = originNumber.substring(originNumber.length() - 11, originNumber.length());
} else if (originNumber.startsWith("+86")) {
formatNumber = originNumber.substring(3);
}
return formatNumber;
} /**
* 根据号码获得运营商名称
*
* @param phone
* @return
*/
public static String getCarrier(String phone) {
String ydRgx = "^1(3[4-9]|47|5[0-27-9]|78|8[2-47-8])\\d{8}$";
String ltRgx = "^1(3[0-2]|45|5[56]|7[156]|8[56])\\d{8}$";
String dxRgx = "^1(33|49|53|7[37]|8[019])\\d{8}$";
String carrier = "";
if (phone.matches(ydRgx)) {
carrier = "移动";
} else if (phone.matches(ltRgx)) {
carrier = "联通";
} else if (phone.matches(dxRgx)) {
carrier = "电信";
}
return carrier;
} /**
* 获取手机类别:手机号码、固定电话、亲情号码、其他号码
*
* @param phone
* @return
*/
public static String getPhoneType(String phone) {
String phoneType = "其它号码";
if (!StringUtils.isEmpty(phone)) {
if (isFixNumber(phone)) {
phoneType = "固定电话";
} else if (isPhoneNumber(phone)) {
phoneType = "手机号码";
}
}
return phoneType;
} public static void main(String[] args) {
String number = "8618435697926";
System.out.println(PhoneUtils.isPhoneNumber(number));
number = "+8618668233542";
String formatStr = PhoneUtils.getFormatPhoneNumer(number);
System.out.println(formatStr);
System.out.println(isFixNumber("0688904000"));
}
}

PhoneUtil的更多相关文章

  1. 项目实战工具类(一):PhoneUtil(手机信息相关)

    可以使用的功能: 1.获取手机系统版本号 2.获取手机型号 3.获取手机宽度 4.获取手机高度 5.获取手机imei串号 ,GSM手机的 IMEI 和 CDMA手机的 MEID. 6.获取手机sim卡 ...

  2. (转载)项目实战工具类(一):PhoneUtil(手机信息相关)

    项目实战工具类(一):PhoneUtil(手机信息相关)   可以使用的功能: 1.获取手机系统版本号 2.获取手机型号 3.获取手机宽度 4.获取手机高度 5.获取手机imei串号 ,GSM手机的 ...

  3. 使用jxl,poi读取excel文件

    作用:在java后台添加一个方法,读取导入的excel内容,根据需要返回相应的sql语句,以完成对临时表的插入操作. 使用jxl读取excel文件 package com.sixthf.bi.sapp ...

  4. Android手机上判断网络运营商

    我们想获取手机的运营商信息.通常都会去调用系统的TelephonyManager类的取数据.但是很多时候可能取不到卡的信息(例如双卡手机和 一些特殊卡),这样就区别不了运营商了.但是有时候我们的需求要 ...

  5. angular2 学习笔记 ( translate, i18n 翻译 )

    更新 : 2017-06-17 <h1 i18n="site header|An introduction header for this sample">Hello ...

  6. tp5服务器验证案例

    1.验证器代码 <?php namespace app\user\validate; use think\Validate; use Potting\IDCard; /** * 山区治理报名验证 ...

  7. 国家code和区号计算

    因为项目中要用到这个功能.实现类似微信注冊时能够选择国家并得到对应的区号.还要推断号码正确与否的正则. 找到了 libPhoneNumber-iOS 标准化电话号码库 https://github.c ...

  8. android call and audio

    mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system ConnCtl *:s android audio (http://blog.cs ...

  9. Android工具类整合

    Android-JSONUtil工具类 常用的Json工具类,包含Json转换成实体.实体转json字符串.list集合转换成json.数组转换成json public class JSONUtil ...

随机推荐

  1. USDT(omniCore)测试环境搭建

    一.测试环境搭建. 注:由于window版本的omni出现同步不了的问题,推荐使用linux系统进行usdt测试链的搭建. 1.下载omnicore: wget https://bintray.com ...

  2. 深度学习网络压缩模型方法总结(model compression)

    两派 1. 新的卷机计算方法 这种是直接提出新的卷机计算方式,从而减少参数,达到压缩模型的效果,例如SqueezedNet,mobileNet SqueezeNet: AlexNet-level ac ...

  3. docker--Dockerfile--sonarqube

    FROM openjdk:8 ENV SONAR_VERSION=6.7.1 \ SONARQUBE_HOME=/opt/sonarqube \ # Database configuration # ...

  4. MT【37】二次函数与整系数有关的题

    解析: 评:两根式是不错的考虑方向,一方面二次函数两根式之前有相应的经验,另一方面这里$\sqrt{\frac{b^2}{4}-c}$正好和两个根有关系.

  5. centos Install Mrtg

    安装支持软件包yum –y install gcc perl gd libpng zlib net-snmp mrtg配置snmpd编辑/etc/snmp/snmpd.conf文件备份snmpd.co ...

  6. 【AGC005F】Many Easy Problems (NTT)

    Description ​ 给你一棵\(~n~\)个点的树和一个整数\(~k~\).设为\(~S~\)为树上某些点的集合,定义\(~f(S)~\)为最小的包含\(~S~\)的联通子图的大小.\(~n~ ...

  7. c语言可变参

    一.什么是可变参数 在C语言编程中有时会遇到一些参数个数可变的函数,例如printf(),scanf()函数,其函数原型为: int printf(const char* format,…),int ...

  8. 洛谷P3953 逛公园

    DP+图论大毒瘤. 推荐这个博客. 先跑两遍最短路,搞掉一些无用点. 然后选出最短路上的边,做拓扑排序. 然后每层DP. 具体看代码. 用到的数组较多,记得清空. #include <cstdi ...

  9. 【LOJ#6282】数列分块6

    题目大意:给定一个由 N 个数组成的序列,维护两种操作:单点询问,单点插入.N < 100000 题解:在块内维护一个链表,支持动态插入数字,同时对于非随即数据来说,若块的大小过大,需要重构. ...

  10. win10下通过Anaconda安装TensorFlow-GPU1.3版本,并配置pycharm运行Mnist手写识别程序

    折腾了一天半终于装好了win10下的TensorFlow-GPU版,在这里做个记录. 准备安装包: visual studio 2015: Anaconda3-4.2.0-Windows-x86_64 ...