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“禁止”泛型数组

    Java“禁止”泛型数组 原文:https://blog.csdn.net/yi_Afly/article/details/52058708 1. 泛型定义泛型编程是一种通过参数化的方式将数据处理与数 ...

  2. MT【242】图像几何意义

    设函数$f(x)=x^2+ax+b$,已知函数$f(x)$在$[-1,1]$上存在零点,若$0\le b-2a\le 1$,求$b$的范围 (2015浙江文科高考20(2)) 分析:理解成$g(x)= ...

  3. 自学Linux Shell16.1-函数概念

    点击返回 自学Linux命令行与Shell脚本之路 16.1-函数概念 编写比较复杂的shell脚本时,完成具体任务的代码可能需要重复使用.bash shell提供满足这种要求的特性.函数是被赋予名称 ...

  4. 【转】__int64 与long long 的区别

    //为了和DSP兼容,TSint64和TUint64设置成TSint40和TUint40一样的数 //结果VC中还是认为是32位的,显然不合适 //typedef signed long int    ...

  5. 爬楼梯问题 leetcode70

    假设你正在爬楼梯,需要n阶你才能到达楼顶,n是正整数 每次你可以爬1或2个台阶,有多少种不同的方法可以爬到楼顶 当n=1时,steps=1 当n=2时,1+1,2 steps=2 当n=3时,1+1+ ...

  6. 使用fiddler模拟http请求

    概述  与httpwath相比,fiddler能模拟http请求.能断点调试.http分析统计吸引了我,使用之后感觉这个工具非常不错,这篇文章只单介绍一下fiddler工作原理,简单介绍一下它的重要功 ...

  7. Druid数据源对数据库访问密码加密好麻烦

    开发中,druid数据源对数据库密码进行了加密,每次切换数据库或者修改密码后,感觉很麻烦. 解决办法: 1.用工具类中的Java代码进行加解密. 需要用到com.alibaba.druid.filte ...

  8. 走进JVM【二】理解JVM内存区域

    引言 对于C++程序员,内存分配与回收的处理一直是令人头疼的问题.Java由于自身的自动内存管理机制,使得管理内存变得非常轻松,不容易出现内存泄漏,溢出的问题. 不容易不代表不会出现问题,一旦内存泄漏 ...

  9. 超详细从零记录Hadoop2.7.3完全分布式集群部署过程

    超详细从零记录Ubuntu16.04.1 3台服务器上Hadoop2.7.3完全分布式集群部署过程.包含,Ubuntu服务器创建.远程工具连接配置.Ubuntu服务器配置.Hadoop文件配置.Had ...

  10. pyglet 绝对路径资源导入以及视频播放(二)

    今天终于搞明白怎么把绝对路径内的视频文件和音频文件导入到资源... 代码: #-*- coding:gbk -*- import pyglet import os window=pyglet.wind ...