Android编程实现的身份证、车牌号正则验证工具类实例
本文实例讲述了Android编程实现的身份证、车牌号正则验证工具类。分享给大家供大家参考,具体如下:
/** *正则表达式验证工具类(验证身份证、车牌号等) * *@authorchenlin * */ publicclassValidateUtil{ /** *验证str是否为正确的身份证格式 * *@paramstr *@return */ publicstaticbooleanisIdentityCard(EditTextview){ booleanflag=true; Stringlicenc=view.getText().toString(); SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd"); /* *{11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古", *21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏", *33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南", *42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆", *51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃", *63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"} */ Stringprovinces="11,12,13,14,15,21,22,23,31,32,33,34,35,36,37,41,42,43,44,45,46,50,51,52,53,54,61,62,63,64,65,71,81,82,91"; Patternpattern=Pattern.compile("^[1-9]\\d{14}"); Matchermatcher=pattern.matcher(licenc); Patternpattern2=Pattern.compile("^[1-9]\\d{16}[\\d,x,X]$"); Matchermatcher2=pattern2.matcher(licenc); //粗略判断 if(!matcher.find()&&!matcher2.find()){ view.setError("身份证号必须为15或18位数字(最后一位可以为X)"); flag=false; }else{ //判断出生地 if(provinces.indexOf(licenc.substring(0,2))==-1){ view.setError("身份证号前两位不正确!"); flag=false; } //判断出生日期 if(licenc.length()==15){ Stringbirth="19"+licenc.substring(6,8)+"-" +licenc.substring(8,10)+"-" +licenc.substring(10,12); try{ Datebirthday=sdf.parse(birth); if(!sdf.format(birthday).equals(birth)){ view.setError("出生日期非法!"); flag=false; } if(birthday.after(newDate())){ view.setError("出生日期不能在今天之后!"); flag=false; } }catch(ParseExceptione){ view.setError("出生日期非法!"); flag=false; } }elseif(licenc.length()==18){ Stringbirth=licenc.substring(6,10)+"-" +licenc.substring(10,12)+"-" +licenc.substring(12,14); try{ Datebirthday=sdf.parse(birth); if(!sdf.format(birthday).equals(birth)){ view.setError("出生日期非法!"); flag=false; } if(birthday.after(newDate())){ view.setError("出生日期不能在今天之后!"); flag=false; } }catch(ParseExceptione){ view.setError("出生日期非法!"); flag=false; } }else{ view.setError("身份证号位数不正确,请确认!"); flag=false; } } if(!flag){ view.requestFocus(); } returnflag; } /** *不为空时,验证str是否为正确的身份证格式 * *@paramstr *@return */ publicstaticbooleanmaybeIsIdentityCard(EditTextview){ booleanflag=true; Stringlicenc=view.getText().toString(); if(!licenc.equals("")){ SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd"); /* *{11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古", *21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏", *33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南", *42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆", *51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃", *63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"} */ Stringprovinces="11,12,13,14,15,21,22,23,31,32,33,34,35,36,37,41,42,43,44,45,46,50,51,52,53,54,61,62,63,64,65,71,81,82,91"; Patternpattern=Pattern.compile("^[1-9]\\d{14}"); Matchermatcher=pattern.matcher(licenc); Patternpattern2=Pattern.compile("^[1-9]\\d{16}[\\d,x,X]$"); Matchermatcher2=pattern2.matcher(licenc); //粗略判断 if(!matcher.find()&&!matcher2.find()){ view.setError("身份证号必须为15或18位数字(最后一位可以为X)"); flag=false; }else{ //判断出生地 if(provinces.indexOf(licenc.substring(0,2))==-1){ view.setError("身份证号前两位不正确!"); flag=false; } //判断出生日期 if(licenc.length()==15){ Stringbirth="19"+licenc.substring(6,8)+"-" +licenc.substring(8,10)+"-" +licenc.substring(10,12); try{ Datebirthday=sdf.parse(birth); if(!sdf.format(birthday).equals(birth)){ view.setError("出生日期非法!"); flag=false; } if(birthday.after(newDate())){ view.setError("出生日期不能在今天之后!"); flag=false; } }catch(ParseExceptione){ view.setError("出生日期非法!"); flag=false; } }elseif(licenc.length()==18){ Stringbirth=licenc.substring(6,10)+"-" +licenc.substring(10,12)+"-" +licenc.substring(12,14); try{ Datebirthday=sdf.parse(birth); if(!sdf.format(birthday).equals(birth)){ view.setError("出生日期非法!"); flag=false; } if(birthday.after(newDate())){ view.setError("出生日期不能在今天之后!"); flag=false; } }catch(ParseExceptione){ view.setError("出生日期非法!"); flag=false; } }else{ view.setError("身份证号位数不正确,请确认!"); flag=false; } } if(!flag){ view.requestFocus(); } } returnflag; } /** *验证str是否为正确的身份证格式 * *@paramstr *@return */ publicstaticbooleanisIdentityCard(Stringlicenc){ booleanflag=true; SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd"); /* *{11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古", *21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏", *33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南", *42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆", *51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃", *63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"} */ Stringprovinces="11,12,13,14,15,21,22,23,31,32,33,34,35,36,37,41,42,43,44,45,46,50,51,52,53,54,61,62,63,64,65,71,81,82,91"; Patternpattern=Pattern.compile("^[1-9]\\d{14}"); Matchermatcher=pattern.matcher(licenc); Patternpattern2=Pattern.compile("^[1-9]\\d{16}[\\d,x,X]$"); Matchermatcher2=pattern2.matcher(licenc); //粗略判断 if(!matcher.find()&&!matcher2.find()){ flag=false; }else{ //判断出生地 if(provinces.indexOf(licenc.substring(0,2))==-1){ flag=false; } //判断出生日期 if(licenc.length()==15){ Stringbirth="19"+licenc.substring(6,8)+"-" +licenc.substring(8,10)+"-" +licenc.substring(10,12); try{ Datebirthday=sdf.parse(birth); if(!sdf.format(birthday).equals(birth)){ flag=false; } if(birthday.after(newDate())){ flag=false; } }catch(ParseExceptione){ flag=false; } }elseif(licenc.length()==18){ Stringbirth=licenc.substring(6,10)+"-" +licenc.substring(10,12)+"-" +licenc.substring(12,14); try{ Datebirthday=sdf.parse(birth); if(!sdf.format(birthday).equals(birth)){ flag=false; } if(birthday.after(newDate())){ flag=false; } }catch(ParseExceptione){ flag=false; } }else{ flag=false; } } returnflag; } /** *验证str是否为正确的车牌号 * *@paramstr *@return */ publicstaticbooleanisPlateNo(EditTextview){ Stringno=view.getText().toString().trim(); if(no==null||no.equals("")){ returnfalse; } Stringstr="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; String[]str1={"京","津","冀","晋","蒙","辽","吉","黑","沪","苏", "浙","皖","闽","赣","鲁","豫","鄂","湘","粤","桂","琼","渝", "川","贵","云","藏","陕","甘","青","宁","新","农","台","中", "武","WJ","亥","戌","酉","申","未","午","巳","辰","卯","寅", "丑","子","葵","壬","辛","庚","己","戊","丁","丙","乙","甲", "河北","山西","北京","北","南","兰","沈","济","成","广","海","空", "军","京V","使"}; if(no.equals("新车")){ returntrue; } if(no.length()==7){ inth=0; for(intr=0;r1){ Stringjq1=no.substring(0,1); Stringjq2=no.substring(0,2); for(intk=0;k PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:
JavaScript正则表达式在线测试工具:
http://tools.jb51.net/regex/javascript正则表达式在线生成工具:
http://tools.jb51.net/regex/create_reg更多关于Android相关内容感兴趣的读者可查看本站专题:《Android控件用法总结》、《Android开发入门与进阶教程》、《Android视图View技巧总结》、《Android编程之activity操作技巧总结》、《Android数据库操作技巧总结》及《Android资源操作技巧汇总》
希望本文所述对大家Android程序设计有所帮助。