「java正则验证身份证号」java身份证号码的正则表达式
今天给各位分享java正则验证身份证号的知识,其中也会对java身份证号码的正则表达式进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java用正则表达式判断一个18位身份证号是否有效
- 2、Java-18位身份证号的正则表达式。帮忙拆一下代码。
- 3、java代码怎么校验身份证号码含有非法字符
- 4、在java后台,用正则表达式验证身份证
- 5、java字符串操作,验证输入的身份证合法与否
java用正则表达式判断一个18位身份证号是否有效
很显然 是你得正则表达式不对啊,正确的18位身份证验证正则为:
String regex = "^[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]$";
而且就算正则表达式正确了,你的逻辑判断代码也是有问题,
完成代码如下,请参考:
public class Homework {
public static void main(String[] args) {
String regex = "^[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位的身份证号码:");
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
if (s.matches(regex)) {
int y1, y2;
String year1 = s.substring(6, 8);
y1 = Integer.parseInt(year1);
String year2 = 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)) {
int m, d;
String month = s.substring(10, 12);
m = Integer.parseInt(month);
String day = 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("有效");
else if ((m == 4 || m == 6 || m == 9 || m == 11) (d == 30))
System.out.println("有效");
else if (m == 2) {
int y;
String year = s.substring(6, 10);
y = Integer.parseInt(year);
if (((y % 4 == 0 y % 100 != 0) || y % 400 == 0)
(d == 29))
System.out.println("有效");
else if (((y % 4 != 0 y % 100 == 0) || y % 400 != 0)
(d == 28))
System.out.println("有效");
else
System.out.println("无效");
return;
} else {
System.out.println("无效");
return;
}
int ss;
String sex = 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
$ 匹配字符串的结束
java代码怎么校验身份证号码含有非法字符
如果只要判断有非法的字符(除0-9和Xx外)可用正则表达式publicstaticvoidmain(String[]args){//TODOcodeapplicationlogichereStrings="2142213weqrwe32";StringregEx="[^0-9Xx]";Patternpat=Pattern.compile(regEx);Matchermat=pat.matcher(s);booleanrs=mat.find();if(rs){System.out.print("有非法字符");}另外,校验身份证号码有专门程序的,可直接校验身份证号是否正确,在自己在网上找下
在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位,或者格式不正确(包含非数字字符,除了最后一位的X除外)则返回一个字符串“您输入的身份证号码有误”
* */
import java.util.Scanner;
public class JudgeID {
public static void main(String[] args){
Scanner reader = new Scanner(System.in);
System.out.println("请输入您的id号码");
String id = reader.next();
System.out.println(judgeID(id));
}
public static String judgeID(String IDNumber){
int len = IDNumber.length();
String wrongMsg = "您输入的身份证号有误";
String correctMsg = null;
char lastChar = IDNumber.charAt(len-1);
String year = null;
String month = null;
String day = null;
if(len != 18){
return wrongMsg;
}
for(int i = 0; i len-1; i++){
if(IDNumber.charAt(i) '0' || IDNumber.charAt(i) '9' ){
return wrongMsg;
}
}
if(lastChar != 'X' lastChar '0' lastChar '9'){
return wrongMsg;
}
//如果身份证格式是没有问题的,那个打印年月日信息
year = IDNumber.substring(6,10);
month = IDNumber.substring(10,12);
day = IDNumber.substring(12,14);
correctMsg = "您是"+year+"年"+month+"月"+day+"日出生!";
return correctMsg;
}
}
关于java正则验证身份证号和java身份证号码的正则表达式的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。