java 正则表达式 电话_Java-12正则表达式验证电话号码

在注册会员是,经常需要输入电话号码,电话号码是只手机号码或者固定电话。如果输入的内容不合法,则会向用户输出提士。本实例模拟实现电话号码的验证功能,接收用户在控制台输入的电话号码,然后进行判断,并将结果输出。

在这里使用《Java正则表达式》一节中讲到的正则表达式支持的字符来实现,步骤如下。

(1)创建名为Test21.java的Java文件,在main()方法中开始编写代码。

import java.until.Scanner;

import java.until.regex.Matcher;

import java.until.regex.Pattern;

public class Text21{

public static void main(String[] args){

//编写代码

}

}

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

String regex = "0\\d{2,3}[-]?\\d{7,8}|0\\d{2,3}\\s?\\d{7,8}|13[0-9]\\d{8}|15[1089]\\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开头。考虑到手机号码的特殊性,这里使用"13[0-9]\\d{8}|15[1089]\\d{8}"表达式进行匹配。该正则表达式验证13或15开头的手机号码;以15开头的电话号码,第3位数字只能是1,0,8,9中的一个。

(3)声明String类型的answer变量,它表示是否继续验证电话号码。代码如下:

String answer = "Y";

(4)使用do...while语句进行操作,搜线解溲用户在控制台输入的电话号码,然后利用Pattern进行编译,接着创建给定输入模式的匹配器,调用matches()方法返回匹配的结果。如果结果位true表示验证通过,如果位false表示验证失败。代码如下:

do{

System.out.print("请留下您的电话号码");

Scanner scan = new Scanner(System.in);

String phone = scan.next(); //接收用户在控制台输入的电话号码

Pattern pattern = Pattern.compile(regex);//编译正则表达式

Matcher matcher = pattern.matcher(phone); //创建给定输入模式的匹配器

boolean bool = matcher.matches();

if (bool){//如果验证通过

System.out.println("输入的电话号码格式正确。");

}else{

System.out.println("输入的电话号码无效,格式不正确。");

}

System.out.print("是否继续输入?(Y/N或者y/n)");

answer = scan.next();

}

while(answer.\equalsIgnoreCase("Y"));

System.out.println("注册结束。");

(5)运行代码进行测试,如下所示:

请留下您的电话:18812345678

输入的电话号码无效,格式不正确。

是否继续输入?(Y/N或者y/n)y

请留下您的电话号码:180112345678

输入的电话号码无效,格式不正确。

是否继续输入?(Y/N或者y/n)n

注册结束。

请留下您的电话号码:010-12345678

输入的电话号码格式正确。

是否继续输入?(Y/N或者y/n)y

输入的电话号码无效,格式不正确。

是否继续输入?(Y/N或者y/n)y

请留下您的电话号码:0388-12345678

输入的电话号码格式正确。

是否继续输入?(Y/N或者y/n)n

注册结束。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值