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

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;
        }
    }
相关推荐
FakeOccupational14 小时前
电路笔记(信号):网线能传多少米?网线信号传输距离
开发语言·笔记·php
字节拾光录14 小时前
手机号存储避坑指南:从20亿级数据库实践看,为什么VARCHAR才是终极答案
java·数据库·oracle
p***976114 小时前
SpringBoot(7)-Swagger
java·spring boot·后端
李宥小哥14 小时前
Redis10-原理-网络模型
开发语言·网络·php
利刃大大14 小时前
【c++中间件】语音识别SDK && 二次封装
开发语言·c++·中间件·语音识别
j***294814 小时前
springboot集成onlyoffice(部署+开发)
java·spring boot·后端
叫致寒吧18 小时前
Tomcat详解
java·tomcat
同学小张19 小时前
【端侧AI 与 C++】1. llama.cpp源码编译与本地运行
开发语言·c++·aigc·llama·agi·ai-native
踢球的打工仔20 小时前
PHP面向对象(7)
android·开发语言·php