java手机号码格式验证

主要用到这两个包:

import java.util.regex.Matcher;

import java.util.regex.Pattern;

Pattern类用于创建一个正则表达式,生成一个Pattern对象并且编译一个正则表达式,也可以说创建一个匹配模式,

它的构造方法是私有的,不可以直接创建,    但可以通过Pattern.complie(String regex)简单工厂方法创建一个正则表达式,

轮到Matcher类登场了,Pattern.matcher(CharSequence input)返回一个Matcher对象.

Matcher类的构造方法也是私有的,不能随意创建,只能通过Pattern.matcher(CharSequence input)方法得到该类的实例

String.matches() 这个方法主要是返回是否匹配指定的字符串,如果匹配则为true,否则为false;

运营商号段信息:

中国联通号码:130、131、132、145(无线上网卡)、155、156、185(iPhone5上市后开放)、186、176(4G号段)、

175(2015年9月10日正式启用,暂只对北京、上海和广东投放办理)

中国移动号码:134、135、136、137、138、139、147(无线上网卡)、150、151、152、157、158、159、182、183、187、188、178

中国电信号码:133、153、180、181、189、177、173、149 虚拟运营商:170、1718、1719

手机号前3位的数字包括:

第一位 :1

第二位:2 :3,4,5,7,8

第三位: 0,1,2,3,4,5,6,7,8,9

总结:

目前java手机号码正则表达式有:

一: "^1[3|4|5|7|8][0-9]\\d{4,8}$"    一般验证情况下这个就可以了

二: "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17[013678])|(18[0,5-9]))\\d{8}$"

范例:

import java.util.Random;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class BuMa {
    static  Scanner tel = new Scanner(System.in);
    public static void main(String[] args) {
        System.out.println("请输入手机号:");

        while(true){
            try{
                Long tele = tel.nextLong();
                    if(String.valueOf(tele).length() != 11){
                        System.out.println("你输入的手机号码长度错误!请重新输入:");
                    }else {
                        String regex = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17[013678])|(18[0,5-9]))\\d{8}$";
                        Pattern p = Pattern.compile(regex);
                        String str = String.valueOf(tele);
                        Matcher m = p.matcher(str);
                        if(m.matches()){
                            System.out.println("您的手机号格式正确!");
                            String s = str.substring(0, 3) + "****" + str.substring(str.length() - 4, str.length());
                            System.out.println(s);
                            break;
                        }else{
                            System.out.println("您的手机号格式不正确!请重新输入:");
                        }


                    }


            } catch (Exception E){
                tel = new Scanner(System.in);
                System.out.println("你输入的手机号码含有非法字符!请重新输入:");
            }
        }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值