「java正则验证身份证号」java身份证号码的正则表达式

博主:adminadmin 2023-01-25 04:15:09 325

今天给各位分享java正则验证身份证号的知识,其中也会对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身份证号码的正则表达式的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。