java实现电话号码的辨认

java可以使用正则表达式来判定输入的是否为手机或电话号码,Java中的正则表达式模式始终是验证用户电话号码的最佳方法。

首先声明 String 类型的 regex 变量,它是用于验证电话号码的表达式。代码如下:

String regex="0\\d{2,3}[-]?\\d{7,8}|0\\d{2,3}\\s?\\d{7,8}|1[0-9][0-9]\\d{8}";

电话号码包括固定电话和手机号码。
其中固定电话是由区号和号码组成,区号是以 0 开头的,后面是 2-3 位数,因此在匹配区号的时候可以使用正则表达式 0\d{2,3},固定电话号码由 7~8 位数字组成,因此可以使用表达式 \d{7,8} 来进行匹配。固定电话的组合方式可能是“区号-号码”或者是“区号号码”,因此匹配固定电话号码时,可以使用“0\d{2,3}[-]?\d{7,8}|0\d{2,3}\s?\d{7,8}” 表达式。

手机号码是 11 位数,并且以数字 1 开头。现在的电话号码种类繁多,博主并没有仔细查询,这里使用“1[3-9][0-9]\d{8}”表达式进行匹配。请自行查询目前手机号码的格式。
此时,可以判断输入的是否为手机或电话号,但无法进行
单一的分辨,可将代码拆分:

String regex1="0\\d{2,3}[-]?\\d{7,8}|0\\d{2,3}\\s?\\d{7,8}";
String regex2="1[3-9][0-9]\\d{8}";

进行输入号码的匹配与判断:

Pattern pattern1=Pattern.compile(regex1);
Pattern pattern2=Pattern.compile(regex2);
Matcher matcher1=pattern1.matcher(phone);
Matcher matcher2=pattern2.matcher(phone);
boolean boo1=matcher1.matches();
boolean boo2=matcher2.matches();

详细代码如下:

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PhoneNumber{
          public static void main(String args[]){
                     String regex1="0\\d{2,3}[-]?\\d{7,8}|0\\d{2,3}\\s?\\d{7,8}";
                     String regex2="1[3-9][0-9]\\d{8}";
                     Scanner scan=new Scanner(System.in);
                     String answer;
                     do{
                               System.out.println("请输入您的号码: ");
                               String phone=scan.next();
                               //定义Pattern对象
                               Pattern pattern1=Pattern.compile(regex1);
                               Pattern pattern2=Pattern.compile(regex2);
                               //匹配对象
                               Matcher matcher1=pattern1.matcher(phone);
                               Matcher matcher2=pattern2.matcher(phone);
                               //bool函数判断输入是否正确
                               boolean boo1=matcher1.matches();
                               boolean boo2=matcher2.matches();
                               if(boo1)
                                           System.out.println("您输入的是电话号码:\n"+phone);
                               else if(boo2)
                                                      System.out.println("您输入的是手机号码:\n"+phone);
                                      
                                      else
                                                       System.out.println("格式错误:\n");
                               System.out.println("是否重新输入?(Y/N)");
                               answer=scan.next();
                     }while(answer.equalsIgnoreCase("Y")); 
           }
}    

运行如下:

代码中有一处要特别注意,answer函数的定义在外,以免有些编译器的报错。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值