对护照等的正则判断(JAVA-工作记录)

1、分析

需求:对护照、港澳通行证、台湾居民大陆通行证进行后台规则校验;

各证件类型的规则:

护照:

14/15开头 + 7位数字;
或G + 8位数字;
或P + 7位数字;
或S/D + 7或8位数字;

港澳通行证:

H或M开头,+10位或6位数字; 

台湾居民大陆通行证:

8位数字或18位数字,或数字+英文字母(总计10位)

2、代码实现

所需java工具类:java.util.regex.Matcher和java.util.regex.Pattern

class utilforcard{
    /**
     * 
     * @param regex 正则字符串
     * @param str  需要比较的字符串
     * @return 比较结果 true 匹配 false 不匹配
     */
    private static boolean match(String regex, String str) {
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(str);
        return matcher.matches();
    }
    /**
     * 证件校验
     * @param cardnum 校验的证件的号码
     * @param cardtype 证件类型
     * @return 比较结果 true 匹配 false 不匹配
     */
    public static boolean cardValidate(String cardnum,String cardtype){
        String reg="";
        switch (cardtype){
            case "passport":
                // 护照
                reg="^1[45][0-9]{7}|^[P|S]\\d{7}|^[S|G]\\d{8}$";
                break;
            case "gapass":
                // 港澳居民来往内地通行证
                reg = "^[H|M]\\d{10}|^[H|M]\\d{6}$";
                break;
            case "twpass":
                // 台湾居民来往大陆通行证
                reg = "^\\d{8}|^[a-zA-Z0-9]{10}|^\\d{18}$";
                break;
            default:break;
        }
        return match(reg,cardnum);
    }




}

3、总结

护照正则字符串:"^1[45][0-9]{7}|^[P|S]\\d{7}|^[S|G]\\d{8}$"
港澳居民来往内地通行证正则字符串:"^[H|M]\\d{10}|^[H|M]\\d{6}$"
台湾居民来往大陆通行证正则字符串:"^\\d{8}|^[a-zA-Z0-9]{10}|^\\d{18}$"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值