判断手机号码,邮箱,身份证,银行卡等

来源:互联网 发布:输入法切换软件 编辑:程序博客网 时间:2024/04/29 16:19
/**     * 验证是否为手机号码     *     * @param phoneNumber     * @return     */    public static boolean isPhoneNumberValid(String phoneNumber) {        boolean isValid = false;        String expression = "((^(13|15|18)[0-9]{9}$)|(^0[1,2]{1}\\d{1}-?\\d{8}$)|(^0[3-9] {1}\\d{2}-?\\d{7,8}$)|(^0[1,2]{1}\\d{1}-?\\d{8}-(\\d{1,4})$)|(^0[3-9]{1}\\d{2}-? \\d{7,8}-(\\d{1,4})$))";        CharSequence inputStr = phoneNumber;        Pattern pattern = Pattern.compile(expression);        Matcher matcher = pattern.matcher(inputStr);        if (matcher.matches()) {            isValid = true;        }        return isValid;    }


/**     * 验证是否为邮箱     *     * @param email     * @return     */    public boolean isEmail(String email) {        String str = "^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$";        Pattern p = Pattern.compile(str);        Matcher m = p.matcher(email);        return m.matches();    }


判断身份证的位数和尾数,不能判断日期是否正确

 public boolean personIdValidation(String text) {        String txtx = "[0-9]{17}x";        String txt15 = "[0-9]{15}";        String txt18 = "[0-9]{18}";        return text.matches(txtx) || text.matches(txt15) || text.matches(txt18);

接下来的代码就比较多,判断的非常详细!哪位大神可以转换成正则就好了吐舌头

 public static boolean IDCardValidate(String IDStr) {        String[] ValCodeArr = { "1", "0", "x", "9", "8", "7", "6", "5", "4",                "3", "2" };        String[] Wi = { "7", "9", "10", "5", "8", "4", "2", "1", "6", "3", "7",                "9", "10", "5", "8", "4", "2" };        String Ai = "";        // ================ 号码的长度 15位或18位 ================        if (IDStr.length() != 15 && IDStr.length() != 18) {            return false;        }        // ================ 数字 除最后一位都为数字 ================        if (IDStr.length() == 18) {            Ai = IDStr.substring(0, 17);        } else if (IDStr.length() == 15) {            Ai = IDStr.substring(0, 6) + "19" + IDStr.substring(6, 15);        }        if (isNumeric(Ai) == false) {            return false;        }        // ================ 出生年月是否有效 ================        String strYear = Ai.substring(6, 10);// 年份        String strMonth = Ai.substring(10, 12);// 月份        String strDay = Ai.substring(12, 14);// 日期        if (isDataFormat(strYear + "-" + strMonth + "-" + strDay) == false) {            return false;        }        GregorianCalendar gc = new GregorianCalendar();        SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd");        try {            if ((gc.get(Calendar.YEAR) - Integer.parseInt(strYear)) > 150                    || (gc.getTime().getTime() - s.parse(strYear + "-" + strMonth + "-" + strDay).getTime()) < 0) {                return false;}        } catch (ParseException e) {            e.printStackTrace();        }        if (Integer.parseInt(strMonth) > 12 || Integer.parseInt(strMonth) == 0) {            return false;        }        if (Integer.parseInt(strDay) > 31 || Integer.parseInt(strDay) == 0) {            return false;        }        // ================ 地区码是否有效 ================        Hashtable h = GetAreaCode();        if (h.get(Ai.substring(0, 2)) == null) {            return false;        }        // ==============================================        // ================ 判断最后一位的值 ================        int TotalmulAiWi = 0;        for (int i = 0; i < 17; i++) {            TotalmulAiWi = TotalmulAiWi                    + Integer.parseInt(String.valueOf(Ai.charAt(i)))                    * Integer.parseInt(Wi[i]);        }        int modValue = TotalmulAiWi % 11;        String strVerifyCode = ValCodeArr[modValue];        Ai = Ai + strVerifyCode;        if (IDStr.length() == 18) {            if (Ai.equals(IDStr) == false) {                return false;            }        } else {            return true;        }        return true;    }    /**     * 功能:判断字符串是否为数字     *     * @param str     * @return     */    private static boolean isNumeric(String str) {        Pattern pattern = Pattern.compile("[0-9]*");        Matcher isNum = pattern.matcher(str);        if (isNum.matches()) {            return true;        } else {            return false;        }    }    /**     * 功能:设置地区编码     *     * @return Hashtable 对象     */    @SuppressWarnings({ "rawtypes", "unchecked" })    private static Hashtable GetAreaCode() {        Hashtable hashtable = new Hashtable();        hashtable.put("11", "北京");        hashtable.put("12", "天津");        hashtable.put("13", "河北");        hashtable.put("14", "山西");        hashtable.put("15", "内蒙古");        hashtable.put("21", "辽宁");        hashtable.put("22", "吉林");        hashtable.put("23", "黑龙江");        hashtable.put("31", "上海");        hashtable.put("32", "江苏");        hashtable.put("33", "浙江");        hashtable.put("34", "安徽");        hashtable.put("35", "福建");        hashtable.put("36", "江西");        hashtable.put("37", "山东");        hashtable.put("41", "河南");        hashtable.put("42", "湖北");        hashtable.put("43", "湖南");        hashtable.put("44", "广东");        hashtable.put("45", "广西");        hashtable.put("46", "海南");        hashtable.put("50", "重庆");        hashtable.put("51", "四川");        hashtable.put("52", "贵州");        hashtable.put("53", "云南");        hashtable.put("54", "西藏");        hashtable.put("61", "陕西");        hashtable.put("62", "甘肃");        hashtable.put("63", "青海");        hashtable.put("64", "宁夏");        hashtable.put("65", "新疆");        hashtable.put("71", "台湾");        hashtable.put("81", "香港");        hashtable.put("82", "澳门");        hashtable.put("91", "国外");        return hashtable;    }    /**     * 验证日期字符串是否是YYYY-MM-DD格式     *     * @param str     * @return     */    private static boolean isDataFormat(String str) {        boolean flag = false;        // String        // regxStr="[1-9][0-9]{3}-[0-1][0-2]-((0[1-9])|([12][0-9])|(3[01]))";        String regxStr = "^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s(((0?[0-9])|([1-2][0-3]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$";        Pattern pattern1 = Pattern.compile(regxStr);        Matcher isNo = pattern1.matcher(str);        if (isNo.matches()) {            flag = true;        }        return flag;    }


 /**     * 验证银行卡号是否正确     *     * @param cardId     * @return     */    public static boolean checkBankCard(String cardId) {        char bit = getBankCardCheckCode(cardId                .substring(0, cardId.length() - 1));        if (bit == 'N') {            return false;        }        return cardId.charAt(cardId.length() - 1) == bit;    }    private static char getBankCardCheckCode(String nonCheckCodeCardId) {        if (nonCheckCodeCardId == null                || nonCheckCodeCardId.trim().length() == 0                || !nonCheckCodeCardId.matches("\\d+")) {            // 如果传的不是数据返回N            return 'N';        }        char[] chs = nonCheckCodeCardId.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 0
原创粉丝点击