本文章主要介绍了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
备注:两个正则的区别在于第一个正则有^开头$结束,而第二个正则没有。
原创文章,作者:6024010,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/228215.html