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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;

参考技术A 虽然你说的不是很清楚,但是可以说一下要是我怎么写:

1、验证字符串长度。
2、正则表达式,验证是不是纯数字,或者最后一位是X。
3、通过第三方验证身份证号是不是正确(公安局),当然了要是有第三个前两个就不用了,直接验证就好了,除非有要求不能这么干,需要你先过滤。本回答被提问者采纳

java实现判断时间是否为合法时间

  最近遇到一个需求,输入字符串,判断为日期的话再进行后面的比较大小之类的操作,但是合法日期的格式也是比较多的,利用正则表达式又太长了。所以后面利用的方法就是,先把输入的字符串转成一种固定的时间格式,然后利用java转String为Date的方法,看程序是否抛出异常来判断日期是否合法,需要注意的是需要将验证设置为严格的,也就是lenient设置为false,默认为true,不然的会出现例如2019-03-1223为正确的日期类型,主要是直接把1223换算成年月日加上去了。

  下面代码实现:

 /**
     * @author Carol
     * @date 2020年7月14日18:11:16
     * 验证字符串是否为合法日期 支持2019-03-12 2019/03/12 2019.03.12   HH:mm:ss HH:mm常用格式
     * @param date
     * @return
     */
    public static boolean verifyDateLegal(String date) {
        if ((date.contains("-") && date.contains("/"))
                || (date.contains("-") && date.contains("."))
                || (date.contains("/") && date.contains("."))){
            return false;
        }
        date.trim();
        StringBuilder timeSb = new StringBuilder();
        date = date.replaceAll("[\.]|[//]", "-");
        String[] time = date.split(" ");
        timeSb.append(time[0]);
        timeSb.append(" ");
        if (time.length > 1) {
            timeSb.append(time[1]);
        }
        int i = time.length > 1 ? time[1].length() : 0;
        for ( ; i < 8 ; i ++) {
            if (i == 2 || i == 5){
                timeSb.append(":");
            } else {
                timeSb.append("0");
            }
        }
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            sdf.setLenient(false);
            sdf.parse(timeSb.toString());
            return true;
        } catch (ParseException e) {
            return false;
        }
    }

 

以上是关于java字符串操作,验证输入的身份证合法与否的主要内容,如果未能解决你的问题,请参考以下文章

java实现判断时间是否为合法时间

SQL Server 验证身份证合法性函数(使用VBScript.RegExp)

比较严谨的java验证18位身份证号码

java【检测密码】一些网站设定了一些指定密码的规则。编写一个方法,检测一个字符串是不是是合法的密码

用java语言创建一个日期类,使得该类能够对日期的合法性进行验证。

java 验证逻辑表达式格式的字符串的合法性