手机正则表达式

使用正则表达式匹配手机号码--java源代码
2009年03月29日 星期日 08:53 P.M.

案例描述:使用正则表达式判断一个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}$";

String mobPhnNum;

public MobPhnNumMatch(String 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;
}

//根据返回的匹配结果输出相应的信息

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:
}
}
}

//主类
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();
    }
   }
}
}


转载: http://hi.baidu.com/snowslince/blog/item/7c15d7eac35471dbd439c927.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值