使用正则表达式匹配手机号码--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