本文章主要介绍了java 从字符串中找出所有身份证号码,具有不错的的参考价值,希望对您有所帮助,如解说有误或未考虑完全的地方,请您留言指出,谢谢!

只能绝对匹配值

       String content = "皖F26581 00-01-6C-06-A6-29 皖F26584   00:01:6C:06:A6:29 330621199112090043  浙F601ML_0 8428cc88-2e76-4188-8495-1c26858c6c8f  13622222222 chlorine-finder@testchlorine.com 1.1.1.1 124.234.223.12 CDCD:910A:2222:5498:8475:1111:3900:2020 111111111111111 111111111111111234"; 
        String content1 = "330621199112090043"; 
 
        String regex ="(^[1-9]\\d{5}(18|19|20)\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$)|(^[1-9]\\d{5}\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}$)"; 
 
        Pattern p = Pattern.compile(regex); 
        Matcher m = p.matcher(content); 
        Matcher m1 = p.matcher(content1); 
        if(m.find()){
    
            System.out.println("m  "+m.group()); 
        } 
 
        if(m1.find()){
    
            System.out.println("m1  "+m1.group()); 
        } 
 

结果:m1 330621199112090043

能找出字符串中所有符合条件的身份证号

       String content = "皖F26581 00-01-6C-06-A6-29 皖F26584   00:01:6C:06:A6:29 330621199112090043  浙F601ML_0 8428cc88-2e76-4188-8495-1c26858c6c8f  13622222222 chlorine-finder@testchlorine.com 1.1.1.1 124.234.223.12 CDCD:910A:2222:5498:8475:1111:3900:2020 111111111111111 111111111111111234"; 
        String content1 = "330621199112090043"; 
 
        String regex ="([1-9]\\d{5}(18|19|20)\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx])|([1-9]\\d{5}\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3})"; 
 
        Pattern p = Pattern.compile(regex); 
        Matcher m = p.matcher(content); 
        Matcher m1 = p.matcher(content1); 
        if(m.find()){
    
            System.out.println("m  "+m.group()); 
        } 
 
        if(m1.find()){
    
            System.out.println("m1  "+m1.group()); 
        } 
 

结果:
m 330621199112090043
m1 330621199112090043

备注:两个正则的区别在于第一个正则有^开头$结束,而第二个正则没有。


发布评论
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

自定义presto函数详解
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。