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;
}
}
额,顺便也存一份正则图在这吧
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实现练手
- 校验手机号码的正则表达式写法 (java实现)
- java代码实现15位身份证号码升级到18位
- 用NFA实现正则表达式匹配(java代码)
- 【LeetCode-面试算法经典-Java实现】【010-Regular Expresssion Matching(正则表达式匹配)】
- Java基于正则表达式实现的替换匹配文本功能【经典实例】
- java正则匹配实现字符串2014-9-10 22:34 对应加上n秒后的时间
- 用正则表达式验证身份证号码 java
- 2-常用的正则匹配规则(会员名,真实姓名,邮箱,身份证号码,邮箱)
- 简单正则表达式匹配的Java实现
- Java实现正则匹配出script标签中字符串包含某个几个单词的所有行,以及编码转换
- 匹配电话号码手机号码的正则,java,基本匹配所有的电话号码
- js正则 - 身份证号码的匹配
- Java基于正则表达式实现查找匹配的文本功能【经典实例】
- java语言利用正则表达式判断身份证号码合法性
- Java 用正则表达式来实现 通配符匹配 (支持*, ?)
- java实现—身份证号码验证
- 最新手机号码,电话号码匹配Java正则表达式
- Java实现身份证号码的验证,JAVA后台验证身份证号码
- 身份证号码校验算法 java实现