您的位置:首页 > 编程语言 > Java开发

java正则实现身份证号码匹配

2017-10-11 17:31 489 查看
java的正则匹配,使用java.util.regex中的 Pattern实现,顺便用小程序实现的,上代码

package homework;
import java.applet.*;
import java.util.regex.*;
import java.awt.*;

public class IDcard extends Applet{
Label lab;
TextField input;
Button butt;

public void init() {
lab=new Label("请输入18位身份证号");
input=new TextField(20);
butt=new Button("clear");

add(lab);
add(input);
add(butt);
}

public boolean action(Event e,Object o) {
if(e.target==input) {
boolean flag=false;
//正则匹配身份证格式,缺陷是未检验日期的正确性
Pattern p=Pattern.compile("(^[1-8][0-7]{2}\\d{3}([12]\\d{3})(0[1-9]|1[012])(0[1-9]|[12]\\d|3[01])\\d{3}([0-9Xx])$)");
String num=input.getText();
Matcher m=p.matcher(num);
//匹配最后一位检验码是否正确
int index[]= {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
//检验码对应规则,第三位实际上应该是x,这个地方用100但是实际上检验时不会用到
int check[]= {1,0,100,9,8,7,6,5,4,3,2};
if(m.matches()) {
int sum=0;
for(int i=0;i<17;i++) sum+=index[i]*(num.charAt(i)-'0');
sum%=11;
if(sum==2 && ( num.charAt(17)=='x'||num.charAt(17)=='X' ) ) flag=true;
else if(check[sum]==(num.charAt(17)-'0')) flag=true;
}
if(flag) showStatus("输入正确,此号码是身份证号");
else showStatus("输入有误,此号码不是身份证号");
}
else if (e.target==butt) input.setText("");
return true;
}
}


额,顺便也存一份正则图在这吧

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 正则 applet