package com.linbilin.test;

import java.util.regex.Pattern;

public class CheckPhone {

/** 座机电话格式验证 **/

private static final String PHONE_CALL_PATTERN = "^(?:\\(\\d{3,4}\\)|\\d{3,4}-)?\\d{7,8}(?:-\\d{1,4})?$";

/**

* 中国电信号码格式验证 手机段: 133,153,180,181,189,177,1700,173

* **/

private static final String CHINA_TELECOM_PATTERN = "(?:^(?:\\+86)?1(?:33|53|7[37]|8[019])\\d{8}$)|(?:^(?:\\+86)?1700\\d{7}$)";

/**

* 中国联通号码格式验证 手机段:130,131,132,155,156,185,186,145,176,1707,1708,1709,175

* **/

private static final String CHINA_UNICOM_PATTERN = "(?:^(?:\\+86)?1(?:3[0-2]|4[5]|5[56]|7[56]|8[56])\\d{8}$)|(?:^(?:\\+86)?170[7-9]\\d{7}$)";

/**

* 简单手机号码校验,校验手机号码的长度和1开头

*/

private static final String SIMPLE_PHONE_CHECK = "^(?:\\+86)?1\\d{10}$";

/**

* 中国移动号码格式验证

* 手机段:134,135,136,137,138,139,150,151,152,157,158,159,182,183,184

* ,187,188,147,178,1705

*

**/

private static final String CHINA_MOBILE_PATTERN = "(?:^(?:\\+86)?1(?:3[4-9]|4[7]|5[0-27-9]|7[8]|8[2-478])\\d{8}$)|(?:^(?:\\+86)?1705\\d{7}$)";

/**

* 仅手机号格式校验

*/

private static final String PHONE_PATTERN = new StringBuilder(300)

.append(CHINA_MOBILE_PATTERN).append("|")

.append(CHINA_TELECOM_PATTERN).append("|")

.append(CHINA_UNICOM_PATTERN).toString();

/**

* 手机和座机号格式校验

*/

private static final String PHONE_TEL_PATTERN = new StringBuilder(350)

.append(PHONE_PATTERN).append("|").append("(")

.append(PHONE_CALL_PATTERN).append(")").toString();

/**

* 匹配多个号码以,、或空格隔开的格式,如 17750581369

* 13306061248、(596)3370653,17750581369,13306061248 (0596)3370653

* @param input

* @param separator 可以自己指定分隔符,如"、, "表示可以以顿号、逗号和空格分隔

* @return

*/

public static boolean checkMultiPhone(String input, String separator) {

separator = escapeMetacharacterOfStr(separator);

String regex = "^(?!.+["

+ separator

+ "]$)(?:(?:(?:(?:\\(\\d{3,4}\\)|\\d{3,4}-)?\\d{7,8}(?:-\\d{1,4})?)|(?:1\\d{10}))(?:["

+ separator + "]|$))+$";

return match(regex, input);

}

/**

* 转义字符串中的[]-^\元字符

*

* @param input

* @param separator

* @return

*/

private static String escapeMetacharacterOfStr(String input) {

String regex = "[-^\\[\\]\\\\]";

return input.replaceAll(regex, "\\\\$0");

}

/**

* 仅手机号码校验

*

* @param input

* @return

*/

public static boolean isPhone(String input) {

return match(PHONE_PATTERN, input);

}

/**

* 手机号或座机号校验

*

* @param input

* @return

*/

public static boolean isPhoneOrTel(String input) {

System.out.println(PHONE_TEL_PATTERN);

return match(PHONE_TEL_PATTERN, input);

}

/**

* 验证电话号码的格式

*

* @author LinBilin

* @param str

* 校验电话字符串

* @return 返回true,否则为false

*/

public static boolean isPhoneCallNum(String str) {

return match(PHONE_CALL_PATTERN, str);

}

/**

* 验证【电信】手机号码的格式

*

* @author LinBilin

* @param str

* 校验手机字符串

* @return 返回true,否则为false

*/

public static boolean isChinaTelecomPhoneNum(String str) {

return match(CHINA_TELECOM_PATTERN, str);

}

/**

* 验证【联通】手机号码的格式

*

* @author LinBilin

* @param str

* 校验手机字符串

* @return 返回true,否则为false

*/

public static boolean isChinaUnicomPhoneNum(String str) {

return match(CHINA_UNICOM_PATTERN, str);

}

/**

* 验证【移动】手机号码的格式

*

* @author LinBilin

* @param str

* 校验手机字符串

* @return 返回true,否则为false

*/

public static boolean isChinaMobilePhoneNum(String str) {

return match(CHINA_MOBILE_PATTERN, str);

}

/**

* 简单手机号码校验,校验手机号码的长度和1开头

*

* @param str

* @return

*/

public static boolean isPhoneSimple(String str) {

return match(SIMPLE_PHONE_CHECK, str);

}

/**

* 匹配函数

*

* @param regex

* @param input

* @return

*/

private static boolean match(String regex, String input) {

return Pattern.matches(regex, input);

}

}

java电话号码_java 验证手机号码、电话号码(包括最新的电信、联通和移动号码)...相关推荐

  1. JAVA学习代码——验证手机号码是否正确

    利用正则表达式判断手机号码 import java.util.Scanner;public class Test {//输入手机号码检查是否有误public String checkMobile(St ...

  2. java表单验证手机号码位数,jquery验证手机号码和邮箱地址例子

    //jquery验证邮箱 function checkSubmitEmail(){ if($("#email").val()==""){ $("#co ...

  3. java 验证手机号码、电话号码(包括最新的电信、联通和移动号码)

    目前的号码段(2017-06-01更新) java代码 package com.linbilin.test;import java.util.regex.Pattern;public class Ch ...

  4. java 验证手机号码、电话号码(包括最新的电信、联通和移动号码) 1

    Cooking Regex微信公众号 正则表达式学习 一.目前的号码段(2019-12-04更新) 新增号段 : 1.移动号码:189.198 2.联通号码:166 3.电信号码:191.199 [注 ...

  5. java表单验证手机号码位数_正则手机号码验证(一)

    function Checkreg() { //验证电话号码手机号码,包含153,159号段 if (document.form.phone.value=="" && ...

  6. c#最新验证是否电话号码和手机号码

    //最新是否电话号码和手机号码          public static bool IsPhoneNo(string str_handset)         {             retu ...

  7. java 固定电话_Java正则表达式验证固定电话号码符合性

    下面给大家介绍Java正则表达式验证固定电话号码符合性,具体代码如下所示: /** * 验证固定电话号码的合法性 * @author jy */ package phone; import java. ...

  8. 最新js验证手机号码、电话号码、身份证号码正则表达式代码

    js验证手机号码.电话号码.身份证号码正则表达式 手机号码正则表达式验证 固定电话号码正则表达式 身份证正则 手机号码正则表达式验证 function checkPhone(){ var phone ...

  9. 正则判断手机号地区_验证手机号码、电话号码的正则表达式汇总

    电话号码正则表达式(支持手机号码,3-4位区号,7-8位直播号码,1-4位分机号) ((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3} ...

最新文章

  1. 世界上最美丽的23个公式
  2. PHP中switch条件语句的使用,php条件语句(2)switch...case语句
  3. Bootstrap4+MySQL前后端综合实训-Day01-AM【实训安排、HBuilder下载及使用、双飞翼布局(圣杯布局)案例、CSS在线手册、flex布局中的对齐方式】
  4. markdown文件转word文件
  5. 常见的SQL笔试题和面试题:SQL经典50题
  6. Android--JNI编程详解
  7. for和foreach
  8. cstring越界_CString 内核
  9. Error parsing HTTP request header Larger错误解决方法
  10. HDU 2063:过山车(匈牙利算法模板题)
  11. 程序员学习时间的由来
  12. 树莓派—raspbian软件源
  13. F-score is ill-defined and being set to 0.0 due to no predicted samples.
  14. vs2019中采用C++编程使用python中的matplotlib画图库
  15. 基于javaweb的设备台账管理系统(java+ssm+html+jsp+js+mysql)
  16. 趣图:六层网络协议的消息传递
  17. requests库通过get()获取网页内容
  18. 生信笔记 | 自定义GSEA分析中的gmt格式文件
  19. 凉爽的夏天=凉爽的心
  20. 反编译Unity3d 中的dll文件

热门文章

  1. 代理服务器列表 20100116
  2. java基于ssm的电影院订票选座系统
  3. 亚洲游戏行业遭遇史上最大DDoS攻击
  4. 资源分享:oracle 数据库软件下载(持续更新,有需要请留言!)
  5. Android初级教程实现电话录音
  6. canvas 水滴图、液体进度条、仿加速球、圆球水波图
  7. AutoCAD Map 3D 2013新功能视频中文版
  8. 如何把char类型的数字字符转换成int类型
  9. VGG(visual geometry group,超分辨率测试序列)
  10. Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or us