java(身份证号,手机号等)验证总结

2019 精帖
0 185

验证

package com.dzqc.dz.main.util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 验证
 * @author Administrator
 *
 */
public class J {
	
    private static final byte MALE = 1;
    private static final byte FAMALE = 0;

    /**
     * 检验身份证是否合法
     * @return 1-合法;0-不合法
     */
    public static int isLegal(String idcard){
    	if(idcard.length()<18) {
    		return 0;
    	}
        int a = 0;
        int sum = 0;
        char checkBit[]={'1','0','X','9','8','7','6','5','4','3','2'};
        int []add={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
        char []stringArr = idcard.toCharArray();
        for (int i=0;i<17;i++){
            sum +=add[i]*(stringArr[i]-'0');
        }
        if (stringArr[17]==checkBit[sum%11]){
            a=1;
        }
        return a;
    }

    /**
     * 判断性别
     * @return 1-男;0-女;-1-错误;
     */
    public static byte sex(String idcard){

        if (isLegal(idcard)==1){
            char []stringArr = idcard.toCharArray();
            if (stringArr[17]%2==0){
                return MALE;
            }else{
                return FAMALE;
            }
        }
        return -1;
    }

    /**
     * 输出年月日
     * @return 年月日的字符串比如:20171207
     */
    public static String year(String idcard){
        String num=null;
        if (isLegal(idcard)==1){
            num = idcard.substring(6,14);
        }
        return num;
    }
	
	/**
	 * 判断字符串是否为空
	 * @param t
	 * @return
	 */
	public static boolean isNull(String t) {
		if(t==null||"".equals(t)) {
			return true;
		}else {
			return false;
		}
	}
	
	/**
	 * 判断是否为纯数字
	 * @param t
	 * @return
	 */
	public static boolean isNum(String t) {
		char ch;
		t=t.trim();
		for(int i=0,j=t.length();i<j;i++) {
			ch=t.charAt(i);
			if(!((ch>='0' && ch<='9'))) {
				return false;
			}
		}
		return true;
	}
	
	/**
	 * 判断是否含有数字
	 * @param t
	 * @return
	 */
	public static boolean haveNum(String t) {
		char ch;
		t=t.trim();
		for(int i=0,j=t.length();i<j;i++) {
			ch=t.charAt(i);
			if(((ch>='0' && ch<='9'))) {
				return true;
			}
		}
		return false;
	}
	
	/**
	 * 验证手机号
	 * @param phone
	 * @return
	 */
	public static boolean isPhone(String phone) {
	    String regex = "^((13[0-9])|(14[5,7,9])|(15([0-3]|[5-9]))|(166)|(17[0,1,3,5,6,7,8])|(18[0-9])|(19[8|9]))\\d{8}$";
	    if (phone.length() != 11) {
	        return false;
	    } else {
	        Pattern p = Pattern.compile(regex);
	        Matcher m = p.matcher(phone);
	        boolean isMatch = m.matches();
	        return isMatch;
	    }
	}
}


银行卡验证:

/** 
        * 校验银行卡卡号 
        */  
       public static boolean checkBankCard(String bankCard) {  
            if(bankCard.length() < 15 || bankCard.length() > 19) {
                return false;
            }
            char bit = getBankCardCheckCode(bankCard.substring(0, bankCard.length() - 1));  
            if(bit == 'N'){  
                return false;  
            }  
            return bankCard.charAt(bankCard.length() - 1) == bit;  
       }  

       /** 
        * 从不含校验位的银行卡卡号采用 Luhm 校验算法获得校验位 
        * @param nonCheckCodeBankCard 
        * @return 
        */  
       private static char getBankCardCheckCode(String nonCheckCodeBankCard){  
           if(nonCheckCodeBankCard == null || nonCheckCodeBankCard.trim().length() == 0  
                   || !nonCheckCodeBankCard.matches("\\d+")) {  
               //如果传的不是数据返回N  
               return 'N';  
           }  
           char[] chs = nonCheckCodeBankCard.trim().toCharArray();  
           int luhmSum = 0;  
           for(int i = chs.length - 1, j = 0; i >= 0; i--, j++) {  
               int k = chs[i] - '0';  
               if(j % 2 == 0) {  
                   k *= 2;  
                   k = k / 10 + k % 10;  
               }  
               luhmSum += k;             
           }  
           return (luhmSum % 10 == 0) ? '0' : (char)((10 - luhmSum % 10) + '0');  
       }


留言(0)
加载更多
猜你喜欢
  • blog java工具 jmap 命令的使用方法以及堆内存快照的创建及分析(1)

            jmap是java虚拟自带的一种内存映像工具,我们可以通过该工具配合不同的参数来查看java虚拟内存的详细信息(如程序中出现的所有对象的数量以及占用内存大小),以及通过虚拟内存
  • blog windows环境下开自启动tomcat

    windows环境下开自启动tomcat1.保tomcat在本正确安装,即双击startup.bat能够正常开启tomcat服务保正常后双击shutdown.bat将服务关闭2.设置环境变量变量名:CATALINA_HOME变量值:
  • blog java字节码指令的工作流程

    字节代码指令 字节代码指令由一个标识该指令的操作码和固定数目的参数组成: 操作码是一个无符字节值——即字节代码名,由助记符标识。例如,操作码 0 用助记符 NOP 表示,对应于不做任何操作的指令。
  • blog equals()与hashCode()方法

    1.hashCode方法的作用: 对于包含容器类型的程序设计语言来说,基本上都会涉及到hashCode,hashCode方法的主要作用是为了配合基于散列的集合一起正常运行,这样的散列集合包括HashSet、HashMap以及H
  • blog java内存模型分析-hotspot虚拟对象探秘

    Java对象的创建 Java是一门面向对象的编程语言,在Java程序运行过程中无时无刻都有对象被创建出来。在语言层面上,创建对象(例如克隆、反序列化)通常仅仅是一个new关键字而已,而在虚拟中,对象(文中讨论的对象限于普通Java对象,不
  • blog java并发编程-线程通讯制(为什么notify(), wait()函数定义在Object中,而不是Thread中)

    1.先看一下线程的生命周期转换图(学java的此图必背)         本篇文章的主要目的不是分析线程的各种状态之间的转换,而主要是研究一下线程之间的通讯制,以及Object的wait方法和
  • blog 在阿里云申请SSL书实现网站https访问

    首先你有一个网站和一个域名首先在阿里云中搜索ssl,点击SSL书到控制台控制台购买完成后点击书申请,会让你填写认信息提交完成后会有一个CA审核的状态,不过审核过程应该很快。审核完成后然后点击下载书,选择的应用的类型下载以tomcat
  • blog java内存模型分析-java虚拟栈最大深度问题与优化

    Java虚拟栈都包含那些东西         在阅读过深入理解java虚拟以后了解到java虚拟栈包括栈帧、局部变量表、操作数栈、动态链接、方法返回Java虚拟栈都储存那些内容呢
  • ofc mysql 字符串函数

    mysql 字符串函数
  • blog java io基础

    IO 是什么?其实就是Java中的一种输入和输出功能,也可以理解为对文件的写入和读出的操作,只不过Java中对这种操作叫做对流的操作。而流不只是对文件进行读写,还可以对内存,网络,程度操作。根据数据的走向可分为输入流和输出流,这个走向是以内