java身份证号
⑴ 使用java判断输入身份证号位数是否正确判断输入是否有效
public static void getString(){
String a,b;
while (true) {
Scanner input = new Scanner(System.in);
System.out.println("请输入您的18位身份证号码!!");
a = (String) input.next();
if (a.length() == 18) {
a.matches("/D");
b = a.substring(6, 14);
System.out.println("请的出生日期为:" + b);
if(a.charAt(16)%2 == 0)
{
System.out.println("您的性别是女性!");
}else{
System.out.println("您的性别是男性!");
}
} else {
System.out.println("您输入的身份证错误!!");
}
}
}
⑵ java身份证号位数校验
function checkIdcard(num)
{
num = num.toUpperCase();
//身份证号码为15位或者18位,位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X。
if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num)))
{
//alert('输入的身份证号长度不对,或者号码不符合规定!\n15位号码应全为数字,18位号码末位可以为数字或X。');
return false;
}
//校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
//下面分别分析出生日期和校验位
var len, re;
len = num.length;
if (len == 15)
{
re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);
var arrSplit = num.match(re);
//检查生日日期是否正确
var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]);
var bGoodDay;
bGoodDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
if (!bGoodDay)
{
//alert('输入的身份证号里出生日期不对!');
return false;
}
else
{
//将15位身份证转成18位
//校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
var nTemp = 0, i;
num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6);
for(i = 0; i < 17; i ++)
{
nTemp += num.substr(i, 1) * arrInt[i];
}
num += arrCh[nTemp % 11];
return true;
}
}
if (len == 18)
{
re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);
var arrSplit = num.match(re);
//检查生日日期是否正确
var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]);
var bGoodDay;
bGoodDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4]));
if (!bGoodDay)
{
//alert(dtmBirth.getYear());
//alert(arrSplit[2]);
//alert('输入的身份证号里出生日期不对!');
return false;
}
else
{
//检验18位身份证的校验码是否正确。
//校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
var valnum;
var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
var nTemp = 0, i;
for(i = 0; i < 17; i ++)
{
nTemp += num.substr(i, 1) * arrInt[i];
}
valnum = arrCh[nTemp % 11];
if (valnum != num.substr(17, 1))
{
//alert('18位身份证的校验码不正确!应该为:' + valnum);
return false;
}
return true;
}
}
return false;
}
var result = checkIdcard(sfzh);
if (!result)
{
$.messager.alert('提示信息','身份证号码格式不正确');
return;
}
⑶ 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程序!
import java.io.*;
public class ID{
private String temp ;
private final char[] cc = {1,0,'X',9,8,7,6,5,4,3,2};
public String getID(){
try{
System.out.println("Input ID,please [input]");
BufferedReader br = new BufferedReader(new InputStreamReader(
System.in));
temp = br.readLine();
}
catch(IOException e){}
System.out.println(" make sure of it:"+temp);
return temp;
}
public void checkit(){
String temp1 = temp;
if(temp1.length() == 18){
System.out.println(temp1.substring(6,10)+"year "+
temp1.substring(10,12)+"month "+
temp1.substring(12,14)+"day "+
"sex: "+checkSex(temp1.charAt(16)) );
}
else if(temp1.length() == 15){
String id = makeit(temp1);
System.out.println(id.substring(6,10)+"year "+
id.substring(10,12)+"month "+
id.subSequence(12,14)+"day "+
"sex: "+ checkSex(id.charAt(16)));
}
else
System.out.println("your input is Error,please input again!");
}
public String checkSex(char c){
if(c%2 == 0)
return "girl";
else
return "boy";
}
public int LastNum(String temp3){
int index = 0;
for(int i = 16;i>= 0;i--){
double wi = Math.pow(2,(i-1)) %11;
int ai = (int)temp3.charAt(i);
index += ai*wi;
}
index = index % 11;
index = (int)this.cc[index];
return index;
}
public String makeit(String temp2){
StringBuffer temp3 = new StringBuffer(temp2);
temp3.insert(6,"19");
temp3.insert(17,LastNum(temp3.toString()));
return temp3.toString();
}
public static void main(String[] args){
ID id = new ID();
id.temp = id.getID();
id.checkit();
}
}
import java.io.*;
public class ID{
private String temp ;
private final char[] cc = {1,0,'X',9,8,7,6,5,4,3,2};
public String getID(){
try{
System.out.println("Input ID,please [input]");
BufferedReader br = new BufferedReader(new InputStreamReader(
System.in));
temp = br.readLine();
}
catch(IOException e){}
System.out.println(" make sure of it:"+temp);
return temp;
}
public void checkit(){
String temp1 = temp;
if(temp1.length() == 18){
System.out.println(temp1.substring(6,10)+"year "+
temp1.substring(10,12)+"month "+
temp1.substring(12,14)+"day "+
"sex: "+checkSex(temp1.charAt(16)) );
}
else if(temp1.length() == 15){
String id = makeit(temp1);
System.out.println(id.substring(6,10)+"year "+
id.substring(10,12)+"month "+
id.subSequence(12,14)+"day "+
"sex: "+ checkSex(id.charAt(16)));
}
else
System.out.println("your input is Error,please input again!");
}
public String checkSex(char c){
if(c%2 == 0)
return "girl";
else
return "boy";
}
public int LastNum(String temp3){
int index = 0;
for(int i = 16;i>= 0;i--){
double wi = Math.pow(2,(i-1)) %11;
int ai = (int)temp3.charAt(i);
index += ai*wi;
}
index = index % 11;
index = (int)this.cc[index];
return index;
}
public String makeit(String temp2){
StringBuffer temp3 = new StringBuffer(temp2);
temp3.insert(6,"19");
temp3.insert(17,LastNum(temp3.toString()));
return temp3.toString();
}
public static void main(String[] args){
ID id = new ID();
id.temp = id.getID();
id.checkit();
}
}
⑸ 用JAVA来判断你所输入的18位身份证号码的性别
其实只要看倒数第二位的数字,是奇数还是偶数。奇数是男,偶数是女。也就是原先15位身份证号的最后一位,性别区分就看这位数。
⑹ 身份证号在java中的声明类型用什么
string因为身份证有的后头是带字母的
比如我就见过带x结尾的身份证号码。
⑺ java怎样解析带有xxxxxxxx的身份证号
Stringstr="320324xxxxxxxx4172";
Stringreg="^.{6}(.+).{4}$";
str=str.replaceAll(reg,"$1");
⑻ java中如何从键盘输入一个18位的身份证号码保存到字符数组Card中
System.out.println("请输入您的身份证:");
Scanner scanner = new Scanner(System.in);
String[] cards = new String[];
cards[0] = scanner.nextLine();
循环输入并存入数组自己实现,很容易
⑼ java编程输入18位身份证号办别女性男女 代码
18为身份证号码的第17位数字表示性别:奇数表示男性,偶数表示女性
所有代码中,只要截取出第17位的数字出来就可以判断性别,如:
String sex;
// 判断性别
if (Integer.parseInt(CardCode.substring(16).substring(0, 1)) % 2 == 0) {
sex = "女";
} else {
sex = "男";
}
⑽ JAVA从控制台输入身份证号码,把生日用星号代替再打印出来
用字符串截取啊、
比如ID=370304198411061433
370304:代表的是地区编号
19841106:出生日期
1433:个人区分号
生日 str = ID.substring(9,13); 这样截取后的子字符串str就是1106。
最后再将截取后的字符串替换成星号。str="****";
最后输出就是:ID.substring(1,9)+str+ID.substring(9,17)
当然 这样比较麻烦 可以试试stringBuff类。