案例描述:使用正则表达式判断一个11位的数字字符串是否是一个手机号码,如果是还要说明是哪个运营商的手机号码。本案例只能证明一个手机号码是否符合真确的规则,无法验证一个手机号码是否真实存在。
有关正则表达式的内容请参考我的另一篇文章:
http://hi.baidu.com/snowslince/blog/item/ee4a0bce67b1183eb700c86e.html
import java.io.*;
class MobPhnNumMatch
{
/*描述不同公司手机号码规则的正则表达式
*cmcc-中国移动手机号码规则
*cucc-中国联通手机号码规则
*cnc--中国网通3G手机号码规则*/
static String cmcc="^[1]{1}(([3]{1}[4-9]{1})|([5]{1}[89]{1}))[0-9]{8}$";
static String cucc="^[1]{1}(([3]{1}[0-3]{1})|([5]{1}[3]{1}))[0-9]{8}$";
static String cnc="^[1]{1}[8]{1}[89]{1}[0-9]{8}$";
{
/*描述不同公司手机号码规则的正则表达式
*cmcc-中国移动手机号码规则
*cucc-中国联通手机号码规则
*cnc--中国网通3G手机号码规则*/
static String cmcc="^[1]{1}(([3]{1}[4-9]{1})|([5]{1}[89]{1}))[0-9]{8}$";
static String cucc="^[1]{1}(([3]{1}[0-3]{1})|([5]{1}[3]{1}))[0-9]{8}$";
static String cnc="^[1]{1}[8]{1}[89]{1}[0-9]{8}$";
String mobPhnNum;
public MobPhnNumMatch(String mobPhnNum)
{
this.mobPhnNum=mobPhnNum;
}
{
this.mobPhnNum=mobPhnNum;
}
public int matchNum()
{
int flag;//存储匹配结果
//判断手机号码是否是11位
if(mobPhnNum.length()==11)
{
//判断手机号码是否符合中国移动的号码规则
if(mobPhnNum.matches(cmcc))
{
flag=1;
}
//判断手机号码是否符合中国联通的号码规则
else if(mobPhnNum.matches(cucc))
{
flag=2;
}
//判断手机号码是否符合中国网通的号码规则
else if(mobPhnNum.matches(cnc))
{
flag=3;
}
//都不合适
else{
flag=4;
}
}
//不是11位
else {
flag=5;
}
return flag;
}
{
int flag;//存储匹配结果
//判断手机号码是否是11位
if(mobPhnNum.length()==11)
{
//判断手机号码是否符合中国移动的号码规则
if(mobPhnNum.matches(cmcc))
{
flag=1;
}
//判断手机号码是否符合中国联通的号码规则
else if(mobPhnNum.matches(cucc))
{
flag=2;
}
//判断手机号码是否符合中国网通的号码规则
else if(mobPhnNum.matches(cnc))
{
flag=3;
}
//都不合适
else{
flag=4;
}
}
//不是11位
else {
flag=5;
}
return flag;
}
//根据返回的匹配结果输出相应的信息
public void match()
{
int flag;
flag=matchNum();
System.out.print(mobPhnNum);
switch(flag){
case 1:
System.out.println("使中国移动的手机号码!");
break;
case 2:
System.out.println("使中国联通的手机号码!");
break;
case 3:
System.out.println("使中国网通3G的手机号码!");
break;
case 4:
System.out.println("不是正确的手机号码!");
break;
case 5:
System.out.println("不是11位的手机号码!");
break;
default:
}
}
}
{
int flag;
flag=matchNum();
System.out.print(mobPhnNum);
switch(flag){
case 1:
System.out.println("使中国移动的手机号码!");
break;
case 2:
System.out.println("使中国联通的手机号码!");
break;
case 3:
System.out.println("使中国网通3G的手机号码!");
break;
case 4:
System.out.println("不是正确的手机号码!");
break;
case 5:
System.out.println("不是11位的手机号码!");
break;
default:
}
}
}
//主类
public class RegularMatch{
public static void main(String[] args)
{
boolean Flag=true;
while(Flag==true)
{
try{
System.out.print("请输入您要查询的手机号码:");
BufferedReader pdataIn=new BufferedReader(new InputStreamReader(System.in));
MobPhnNumMatch MPNM=new MobPhnNumMatch(pdataIn.readLine());
MPNM.match();
System.out.println("继续请按Y,退出请按其它键。");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
char choiceID=(char)br.read();
if(choiceID!='Y')
{
Flag=false;
return;
}
else if(choiceID=='Y'){
Flag=true;
}
}catch(IOException e){
e.printStackTrace();
}
}
}
}
public class RegularMatch{
public static void main(String[] args)
{
boolean Flag=true;
while(Flag==true)
{
try{
System.out.print("请输入您要查询的手机号码:");
BufferedReader pdataIn=new BufferedReader(new InputStreamReader(System.in));
MobPhnNumMatch MPNM=new MobPhnNumMatch(pdataIn.readLine());
MPNM.match();
System.out.println("继续请按Y,退出请按其它键。");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
char choiceID=(char)br.read();
if(choiceID!='Y')
{
Flag=false;
return;
}
else if(choiceID=='Y'){
Flag=true;
}
}catch(IOException e){
e.printStackTrace();
}
}
}
}
转载于:https://blog.51cto.com/ilexes/342415