㈠ java代码怎么校验身份证号码含有非法字符
如果只要判断有非法的字符(除0-9和Xx外)可用正则表达式publicstaticvoidmain(String[]args){//="2142213weqrwe32";StringregEx="[^0-9Xx]";Patternpat=Pattern.compile(regEx);Matchermat=pat.matcher(s);booleanrs=mat.find();if(rs){System.out.print("有非法字符");}另外,校验身份证号码有专门程序的,可直接校验身份证号是否正确,在自己在网上找下
㈡ Java正则表达式实用代码-验证身份证
本文以孙卫琴姐姐的系列Java经典书籍为参考,对Java正则表达式用于验证身份证号码的实用代码进行介绍。
对于第一代身份证的15位验证,正则表达式如下:
编码规则从左到右依次为6位地区代码,6位出生年份后两位及日期,3位顺序码。
正则表达式为:[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3},其中前六位地区代码非0开头,后两位是年份,接着是月份和日期,最后是顺序码。
对于第二代身份证的18位验证,正则表达式如下:
编码规则从左到右依次为6位地区代码,8位年份及日期,3位顺序码,1位校验码(可为x)。
正则表达式为:[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx],其中前六位地区代码非0开头,年份和日期遵循特定格式,顺序码后接一位可为x的校验码。
以下为验证身份证号码有效性的示例代码。
执行上述示例代码,得到的打印结果如下。
㈢ 在java后台,用正则表达式验证身份证
这个是正则表达式,给你段代码,你自己琢磨吧!
//正则表达式 校验是否存在非法字符
private String checkPattern(String str){
String len;
String regEx="[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
len=m.replaceAll("").trim();
return len;
}
㈣ java用正则表达式判断一个18位身份证号是否有效
很显然 是你得正则表达式不对啊,正确的18位身份证验证正则为:
Stringregex="^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$";
而且就算正则表达式正确了,你的逻辑判断代码也是有问题,
publicclassHomework{
publicstaticvoidmain(String[]args){
Stringregex="^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$";
System.out.println("请输入18位的身份证号码:");
Scannerscanner=newScanner(System.in);
Strings=scanner.nextLine();
if(s.matches(regex)){
inty1,y2;
Stringyear1=s.substring(6,8);
y1=Integer.parseInt(year1);
Stringyear2=s.substring(8,10);
y2=Integer.parseInt(year2);
if((y1==18&&y2>=87&&y2<=89)
||(y1==19&&y2>=0&&y2<=99)
||(y1==20&&y2<=17)){
intm,d;
Stringmonth=s.substring(10,12);
m=Integer.parseInt(month);
Stringday=s.substring(12,14);
d=Integer.parseInt(day);
if((m==1||m==3||m==5||m==7||m==8||m==10||m==12)
&&(d==31))
System.out.println("有效");
elseif((m==4||m==6||m==9||m==11)&&(d==30))
System.out.println("有效");
elseif(m==2){
inty;
Stringyear=s.substring(6,10);
y=Integer.parseInt(year);
if(((y%4==0&&y%100!=0)||y%400==0)
&&(d==29))
System.out.println("有效");
elseif(((y%4!=0&&y%100==0)||y%400!=0)
&&(d==28))
System.out.println("有效");
else
System.out.println("无效");
return;
}else{
System.out.println("无效");
return;
}
intss;
Stringsex=s.substring(16,17);
ss=Integer.parseInt(sex);
if(ss%2==0)
System.out.println("女性");
else
System.out.println("男性");
}else
System.out.println("无效");
}else
System.out.println("无效");
}
}
㈤ Java-18位身份证号的正则表达式。帮忙拆一下代码。
^ 匹配字符串的开始
[1-9] 第1位:1-9
\d{5} 第2-6位:0-9
[1-9] 第7位:1-9
\d{3} 第8-10位:0-9
((0\d)|(1[0-2])):
第11-12位:(00-09)或(10-12)
(([0|1|2]\d)|3[0-1])
第13-14位:(00-29)或(30-31)
\d{3} 第15-17位:0-9
([0-9]|X)
第18位:0-9或X
$ 匹配字符串的结束
㈥ 你好看见你懂正则表达式。想请教,身份证号码15位 18位数字 表达式。还有韩国身份证号码是 123456-*******
1. 身份证号码15位 18位数字 /\d{15}|\d{17}(\d|x)/i
2. 韩国身份证号码 /\d{6}\-\d{7} /