各种常用格式校验方法(身份证号格式校验、手机号格式校验、车牌号格式校验...)正则表达式

1、手机号格式校验(1)

java 复制代码
    /**
     * 手机号码-合法性-正则校验
     * @param phoneNumber
     * @return
     */
    public static boolean isValidatePhoneNumber(String phoneNumber) {
        Pattern pattern = Pattern.compile("^[1][3-9]\\d{9}$");
        Matcher matcher = pattern.matcher(phoneNumber);
        return matcher.matches();
    }

2、手机号格式校验(2)包含座机及外国电话

java 复制代码
    /**
     * 包含座机及外国电话
     * @param phoneNumber
     * @return
     */
    public static boolean validatePhoneNumber(String phoneNumber){
        String regex = "^1[3-9]\\d{9}$|" +
                "^1[3-9]\\d{1}[-\\s]\\d{4}[-\\s]\\d{4}$|" +
                "^\\(1[3-9]\\d{1}\\)\\d{4}-\\d{4}$|" +
                "^(?:\\(\\+\\d{2}\\)|\\+\\d{2})(\\d{11})$|" +
                "^0\\d{3}-\\d{7}$|" +
                "^0\\d{2}-\\d{8}$";
        Pattern pattern = Pattern.compile(regex);
        return pattern.matcher(phoneNumber).matches();
    }

3、身份证号格式校验

java 复制代码
    public static boolean validateIdentityNo(String identityNo) {
        String regex = "^\\d{17}[\\d|x|X]$";
        Pattern pattern = Pattern.compile(regex);
        return pattern.matcher(identityNo).matches();
    }

4、车牌号格式校验,包含新能源

java 复制代码
    /**
     * 包含新能源
     * @param carNumber
     * @return
     */
    public static boolean validateCarNumber(String carNumber){
        if (carNumber.length() >= 7 && carNumber.length() <= 8){
            Pattern p = Pattern.compile("^([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[a-zA-Z](([ABCDF]((?![IO])[a-zA-Z0-9](?![IO]))[0-9]{4})|([0-9]{5}[ABCDF]))|[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1})$");
            Matcher m = p.matcher(carNumber);
            return m.matches();
        }else{
            return false;
        }
    }

5、邮箱格式校验

java 复制代码
public static boolean validateEmail(String email) {
        int k = 0;
        if(email == null) {
            return false;
        }
         /*
          * 单引号引的数据 是char类型的
                                    双引号引的数据 是String类型的
                                    单引号只能引一个字符
                                    而双引号可以引0个及其以上*
          */

        //判断是否有仅有一个@且不能在开头或结尾
        if(email.indexOf("@") > 0 && email.indexOf('@') == email.lastIndexOf('@') && email.indexOf('@') < email.length()-1) {
            k++;
        }

        //判断"@"之后必须有"."且不能紧跟
        if(email.indexOf('.',email.indexOf('@')) > email.indexOf('@')+1 ) {
            k++;
        }
        //判断"@"之前或之后不能紧跟"."
        if(email.indexOf('.') < email.indexOf('@')-1 || email.indexOf('.') > email.indexOf('@')+1 ) {
            k++;
        }
        //@之前要有5个字符
        if(email.indexOf('@') > 4 ) {
            k++;
        }

        if(email.endsWith("com") || email.endsWith("org") || email.endsWith("cn") ||email.endsWith("net")) {
            k++;
        }
        return k == 5;
    }

6、校验字符串是否符合年月yyyyMM时间格式

java 复制代码
    /**
     * 校验字符串是否符合yyyyMM时间格式
     * @param dateStr
     * @return
     */
    public static boolean isDateFormatValid(String dateStr){
        String regex = "^(\\d{4})(0[1-9]|1[0-2])$";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(dateStr);
        return matcher.matches();
    }

7、校验字符串是否符合年月日yyyyMMdd时间格式

java 复制代码
    /**
     * 校验字符串是否符合yyyyMMdd格式
     * @param dateStr
     * @return
     */
    public static boolean isDateFormatValid(String dateStr){
        String dateFormat = "yyyyMMdd";
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormat);
        simpleDateFormat.setLenient(false);
        try{
            simpleDateFormat.parse(dateStr);
            return true;
        }catch (ParseException e){
            return false;
        }
    }
相关推荐
一壶浊酒..6 小时前
Scrape Webpack练习
开发语言·javascript·webpack
ZJH__GO6 小时前
网络编程v4pro--实现聊天室文件传输功能
java·服务器·网络·计算机网络
程序员黑豆6 小时前
Windows 系统 Java 环境变量配置全攻略:解决“不是内部或外部命令”
java·前端·ai编程
命运之光7 小时前
【C语言完整代码】就诊信息管理系统
java·c语言·开发语言
命运之光7 小时前
【C语言完整代码】图书管理系统:图书馆场景下的增删改查实战
c语言·开发语言
猿长大人7 小时前
C# | Serilog 新手入门
开发语言·c#·.net·log
marvelyu8 小时前
每天10分钟学会OceanBase系列(Day 20):跨机房容灾实战——构建多数据中心高可用架构
java·大数据·数据库
在世修行9 小时前
从零打造 C# 工业视觉检测系统(七):串口通信 SerialPort 封装与开发
开发语言·c#·modbus rtu·rs232/rs485
AI人工智能+电脑小能手9 小时前
大白话说Java设计模式-04-工厂方法模式(业务实战篇)
java·设计模式·工厂方法模式·架构设计·代码解耦
BUG指挥官9 小时前
Sa-Token和Spring Security对比
java·后端·spring