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

一、目前的号码段(2017-06-01更新)

二、代码

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);
	}

}

  

时间: 2024-08-29 14:44:29

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

java验证手机号码是否合法

公司开发新功能需要验证手机号码,遂自己写了个出来,暂只支持中国大陆手机号验证.如有不妥之处,还望大家不吝赐教,感激不尽! /** * 验证是否是正确合法的手机号码 * * @param telephone * 需要验证的打手机号码 * @return 合法返回true,不合法返回false * */ public static boolean isCellPhoneNo(String telephone) { if (Common.empty(telephone)) { return false

[C#] c# 验证手机号码 最新的17手机号

/// <summary> /// 校验手机号码是否符合标准. /// </summary> /// <param name="mobile"></param> /// <returns></returns> public static bool ValidateMobile(string mobile) { if (string.IsNullOrEmpty(mobile)) return false; retur

jquery验证手机号码和固定电话号码

<pre name="code" class="javascript"> //验证手机号码或者电话号码 function checkContactNumber() { $("#error").css("display", "none"); var mobile = $.trim($("#ContactNumber").val()); var isMobile = /^(((1

用来解析,格式化,存储和验证国际电话号码:libphonenumber

用来解析,格式化,存储和验证国际电话号码:libphonenumber libphonenumber是Google的公共Java.C++和Javascript库用来解析,格式化,存储和验证国际电话号码. 其中Java版本优化用于运行在智能手机上,并且用在了 Android framework 4.0 (Ice Cream Sandwich)以上的版本中. 在android系统的源码中,可以找到这个项目包的. work_space/external/libphonenumber/ 该项目在gith

php验证手机号码

大家都应该有这个常识,中国的手机号码都是以数字“1”开头,然后利用“0~9”10个数字组成的11位数字组合,那么我们的验证规则肯定要根据这个思路来写. 根据上面的简单思路,我们便可以写下以下的验证代码,代码如下: <?php //本代码仅仅是提供一些思路 //距离实际应用还有一些距离 $mobile = '15858588585'; //下面的1便是手机的第一位数字必须为数字1 //[0-9]指后面的数字均为0~9的数字 //{9}这中间的9指的是手机号码除了第一位数外,其他要重复10次,刚好就

01_Weblogic课程之概念篇:代理服务器,web服务器,应用程序服务器,JNDI概念,JTA概念,Java消息服务,Java验证和授权(JAAS),Java管理扩展,Web客户机,客户机应用程序

 1 什么是服务器 Weblogic中服务器分为两种,一种是受管服务器,另外一种是管理服务器. Weblogic课程(Weblogic是Oracle公司的,最开始的是BEA公司的) 一 系统管理 二 开发 三 性能调优 WLS(Weblogic Server) Weblogic 12c新特性是加入了云支持 2 集群的好处:失败迁移和负载均衡. 3 分布式系统 分布式系统将工作划分到几个独立的模块中. 单个模块出现故障对整个系统的影响较小,这使得分布式系统具有更高的: ----可用性 ----

easyUI 验证控件应用、自定义、扩展验证 手机号码或电话话码格式

easyUI 验证控件应用.自定义.扩展验证 手机号码或电话话码格式 在API中   发现给的demo 中没有这个验证,所以就研究了下. 相关介绍省略,直接上代码吧! <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-eq

验证手机号码

手机号码验证 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. //会输出1或者0.1为YES,0为NO NSLog(@"--------%i--",[self validateMobile:@"1393241"]); } #pragma -mark -验证手机号码 //验证手机号码 - (BOOL)validateMobile:

[转帖]快速激活最新JetBrains公司系列产品包括最新的phpstorm10

这个地址太牛了! 转自:http://www.gowhich.com/blog/714 快速激活最新JetBrains公司系列产品包括最新的phpstorm10 15 days ago durban IntelliJ IDEA开源社区 提供了如下通用激活方法: 注册时选择License server 然后输入框填写:http://idea.lanyus.com/ 然后点击 OK,就搞定了. JetBrains注册码计算: idea.lanyus.com/