java编程,关于身份证验证问题。求大神指点

接受用户输入的身份证号码,先判断是否基本合法。1.一共18位号码,2.前17位必须是数字,最后一位是x或者X,3.分析身份证号码
显示此人的生日和性别,奇数为男孩,偶数为女孩

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?"女":"男");
}
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-19
当然是用substring方法,截取你需要验证的部分,至于身份证合法的验证可以分部分用正则,性别问题要先判断号码的位置追问

验证身份证是否合法就卡住了,汗。。

追答

楼主会用正则表达式么?

第2个回答  2013-09-19

    vcccccccccqaa

第3个回答  2013-09-19
将爱归零回答的是正确的
第4个回答  2013-09-19
用正则表达式匹配.
第5个回答  2013-09-19
正则表达式。。。。
相似回答