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

硅谷探秘者 666 0 0

验证

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');  
       }


猜你喜欢
工具 90 java正则表达式同时或电话码importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassPhone
工具 1102 javaweb图片码1.码的作用:防止恶意破解密码、刷票、论坛灌水、刷页。有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登录尝试,实际上使用码是现在很多网站通行的方
框架 102 /groupIdartifactIdkaptcha/artifactIdversion${kaptcha.version}/version/dependency生成码的配置类importcom.google
工具 1331 /versionclassifierjdk15/classifier/dependencydependency groupIdcom.aliyun/groupId artifactIdaliyun-java-sdk-core/
spring/springmvc 1956 我在之前进行接口开发的时候经常会有大量的参数,而我一般的操作方法就是在controller中进行参数的校,这样并没有什么错,但是代码略显臃肿,而使用springboot的@vaild注解可以减
official 14 '(',')','{','}','[',']'的字符串s,判断字符串是否有效。有效字符串需满足:左括必须用相同类型的右括闭合。左括必须以正确的顺序闭合。示例1:输入:s="()",输出:true示例2:输入:s="()[]{}",输出:tr
java基础 1498 java常用反射方法以及用法packagereflect;importjava.lang.annotation.ElementType
框架 119 参数校失败统一返回给前端异常信息参数校如何使用参考:http://www.jiajiajia.club/blog/artical/yjw520/248校需要的pom依赖
归档
2018年11月  12 2018年12月  33 2019年01月  28 2019年02月  28 2019年03月  32 2019年04月  27 2019年05月  33 2019年06月  6 2019年07月  12 2019年08月  12 2019年09月  21 2019年10月  8 2019年11月  15 2019年12月  25 2020年01月  9 2020年02月  5 2020年03月  16 2020年04月  4 2020年06月  1 2020年07月  7 2020年08月  13 2020年09月  9 2020年10月  4
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git undefined undefined sdf sdf dsdf sdfasdfasd sdf ppp sdf fggdgsd kkk kkk kkk sdddf 456
目录