java字符串操作,验证输入的身份证合法与否

Python021

java字符串操作,验证输入的身份证合法与否,第1张

/**

* 定义一个方法,输入一个身份证号码(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 = 0i <len-1i++){

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

}

}

import java.util.*

public class  test{

public static void main(String[] args) 

{

Scanner in=new Scanner(System.in)

System.out.println("请输入18位的身份号码:")

String s="^[0-9]{17}([0-9]|x)"//正则表达式

String str=in.next()

while(!str.matches(s)){//用mathes方法匹配正则表达式,判断是否合法

System.out.println("输入错误,请重新输入:")

str=in.next()

}

System.out.println("生日:"+str.substring(6,10)+"年"+str.substring(10,12)+"月"+str.substring(12,14)+"日")

System.out.println(Integer.parseInt(str.substring(14,15))%2==0?"女":"男")

}

}

如果简单点,只判断身份证是不是18位就行了,比如是

if(f1.sfzh.value.length!=18) { alert("身份证号为空或不足18位") return false }

如果要复杂点,就要用身份证的计算规则来验证了,可以参照这个(链接在电脑上才能显示)网页链接

用链接中的方法的话要改一下,将文中的   alert("恭喜通过验证啦!")均改为return true其它的均改为return false(也就是成功的均return true失败的return false)

然后你上面的判断就可以改为if(!(f1.sfzh.value.length==18 && validateIdCard

(f1.sfzh.value))) { alert("身份证号不足18位或无效") return false }