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. Java之多线程(实现Runnable接口)

    package test_demo.ThreadsDemo; public class TestRunnable { public static void main(String[] args) { ...

  2. python之tkinter使用-简单对话框

    # 简单对话框,包括字符.整数和浮点数 import tkinter as tk from tkinter import simpledialog def input_str(): r = simpl ...

  3. 画caffe训练loss曲线

    Linux下操作 1. 将loss值存储到lossInf.txt中 fName1='loss.txt' cat loss.log | grep "solver.cpp:218] Iterat ...

  4. BZOJ2212 POI2011Tree Rotations(线段树合并)

    显然子树内的操作不会对子树外产生影响.于是贪心,若交换之后子树内逆序对减少就交换. 这个东西可以用权值线段树计算.操作完毕后需要对两棵权值线段树合并,这个的复杂度是两棵线段树的重复节点个数.那么总复杂 ...

  5. JAVA中接口与抽象类

    抽象类总结 抽象类的概念:是使用关键字abstract修饰的类就是抽象类: 抽象类的产生:当多个不能相互继承的类具有相同的功能时,就需要将共同的信息向上抽取,放到公共的父类中:如果公共的父类只能描述所 ...

  6. git命令行界面

    学习目标:掌握git命令行界面的操作.掌握最基本的clone add commit push pull操作. 先下载客户端:http://github-windows.s3.amazonaws.com ...

  7. 洛谷 P4211 [LNOI2014]LCA 解题报告

    [LNOI2014]LCA 题意 给一个\(n(\le 50000)\)节点的有根树,询问\(l,r,z\),求\(\sum_{l\le i\le r}dep[lca(i,z)]\) 一直想启发式合并 ...

  8. CAN通信详解

    30.1 CAN简介 30.2 硬件设计 30.3 软件设计 30.4 下载验证 CAN 是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议. ...

  9. 使用debootstrap制作debian-jessie系统docker镜像

    先看一下Docker官网提示:In general, you'll want to start with a working machine that is running the distribut ...

  10. 隐藏技能go:linkname

    来源:https://blog.csdn.net/lastsweetop/article/details/78830772 什么是go:linkname 指令的格式如下: //go:linkname ...