㈠ 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} /