<div class="iteye-blog-content-contain" style="font-size: 14px"></div>
二话不说,直接上代码
/** * 18位身份证校验,粗略的校验 * @author lyl * @param idCard * @return */ public static boolean is18ByteIdCard(String idCard){ Pattern pattern1 = Pattern.compile("^(\\d{6})(19|20)(\\d{2})(1[0-2]|0[1-9])(0[1-9]|[1-2][0-9]|3[0-1])(\\d{3})(\\d|X|x)?$"); //粗略的校验 Matcher matcher = pattern1.matcher(idCard); if(matcher.matches()){ return true; } return false; } /** * 18位身份证校验,比较严格校验 * @author lyl * @param idCard * @return */ public static boolean is18ByteIdCardComplex(String idCard){ Pattern pattern1 = Pattern.compile("^(\\d{6})(19|20)(\\d{2})(1[0-2]|0[1-9])(0[1-9]|[1-2][0-9]|3[0-1])(\\d{3})(\\d|X|x)?$"); Matcher matcher = pattern1.matcher(idCard); int[] prefix = new int[]{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}; int[] suffix = new int[]{ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 }; if(matcher.matches()){ Map<String, String> cityMap = initCityMap(); if(cityMap.get(idCard.substring(0,2)) == null ){ return false; } int idCardWiSum=0; //用来保存前17位各自乖以加权因子后的总和 for(int i=0;i<17;i++){ idCardWiSum+=Integer.valueOf(idCard.substring(i,i+1))*prefix[i]; } int idCardMod=idCardWiSum%11;//计算出校验码所在数组的位置 String idCardLast=idCard.substring(17);//得到最后一位身份证号码 //如果等于2,则说明校验码是10,身份证号码最后一位应该是X if(idCardMod==2){ if(idCardLast.equalsIgnoreCase("x")){ return true; }else{ return false; } }else{ //用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码 if(idCardLast.equals(suffix[idCardMod]+"")){ return true; }else{ return false; } } } return false; } private static Map<String, String> initCityMap(){ Map<String, String> cityMap = new HashMap<String, String>(); cityMap.put("11", "北京"); cityMap.put("12", "天津"); cityMap.put("13", "河北"); cityMap.put("14", "山西"); cityMap.put("15", "内蒙古"); cityMap.put("21", "辽宁"); cityMap.put("22", "吉林"); cityMap.put("23", "黑龙江"); cityMap.put("31", "上海"); cityMap.put("32", "江苏"); cityMap.put("33", "浙江"); cityMap.put("34", "安徽"); cityMap.put("35", "福建"); cityMap.put("36", "江西"); cityMap.put("37", "山东"); cityMap.put("41", "河南"); cityMap.put("42", "湖北"); cityMap.put("43", "湖南"); cityMap.put("44", "广东"); cityMap.put("45", "广西"); cityMap.put("46", "海南"); cityMap.put("50", "重庆"); cityMap.put("51", "四川"); cityMap.put("52", "贵州"); cityMap.put("53", "云南"); cityMap.put("54", "西藏"); cityMap.put("61", "陕西"); cityMap.put("62", "甘肃"); cityMap.put("63", "青海"); cityMap.put("64", "宁夏"); cityMap.put("65", "新疆"); // cityMap.put("71", "台湾"); // cityMap.put("81", "香港"); // cityMap.put("82", "澳门"); // cityMap.put("91", "国外"); // System.out.println(cityMap.keySet().size()); return cityMap; }
相关推荐
正则表达式验证身份证号码 共两个验证 一个是简单的 只判断是不是15位或者18位, 另外一个方法是复杂的校验,严格判断身份证号码是否合理
最完善的身份证号码合法性校验Java算法,适合Android平台,可以直接拿来在项目中使用,正则表达式。
java 验证手机号码 身份证 email url 以及其他常用的正则表达式的验证方法。
Java正则表达式[web输入验证<身份证,邮箱,URL,手机号等>]
java 正则表达式工具类,验证手机号码 身份证 email
正则表达式 实例
Java正则表达式验证web端输入[身份证,邮箱,手机,中文字符]
javascript 手机号码正则表达式验证函数JS正则表达式验证数字代码JavaScript正则表达式验证身份证号码是否合法(两种方法)jquery正则表达式验证(手机号、身份证号、中文名称)邮箱地址正则表达式验证代码合集软件...
早期我用c#开发了一个正则表达式工具,而现在这个版本是我用java实现的。 众所周知,java在桌面应用方面一直是短板,c#则有着天然的优势。然作为一个java开发人员,采用java的编程思想来实现此功能还是很有必要的。
这个代码实现了一个简单的身份证号码验证。首先定义了一个名为IDCardValidator的类,并在main()方法中定义了一个待...由于使用了正则表达式来验证身份证号码的格式,因此可以方便地检查用户输入的身份证号码是否合法。
正则表达式验证大全,如IP,身份证,字符,网址等的验证
绝对正确的源代码!建立一个熟悉语言环境的类文件(javascript、Java、C#),用于各种输入字符串的科学性验证,要求:包含姓名、学号、身份证号、手机号、电子邮箱
RegexUtils,Java 表单注册常用正则表达式验证工具类,常用正则表达式大集合。 1. 电话号码 2. 邮编 3. QQ 4. E-mail 5. 手机号码 6. URL 7. 是否为数字 8. 是否为中文 9. 身份证 10. 域名 11. IP
配中文字符的正则表达式: [u4e00-u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^x00-xff] 评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII...
JAVA正则表达式语法(转)正则表达式语法正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”)。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式示例表达式 ...
主要介绍了java正则表达式验证工具类,可以校验电话号码,身份证号码,日期格式,URL,email等等,需要的小伙伴参考下吧。
很多时候我们都是通过一组正则表达式来判断用户输入的身份证是否合法,那在用正则表达式判断之前,你对身份证号的组成有多少了解呢?下面来说说一个身份证号里面包含了多少的信息: 1、号码的结构 公民身份...
匹配中文字符的正则表达式: [u4e00-u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^x00-xff] 评注:可以用来计算字符串的长度(一个双字节字符长度计2...
主要介绍了Java常用正则表达式验证类,结合完整实例形式分析了Java针对邮箱、网址URL、IP地址、电话、身份证等正则验证相关操作技巧,需要的朋友可以参考下
//java正则表达式数字验证 public boolean isNumber(String str) { java.util.regex.Pattern pattern=java.util.regex.Pattern.compile("[0-9]+(.[0-9]+)?"); java.util.regex.Matcher match=pattern.matcher...