java验证帮助方法(例如:电话号码,邮编,字符串验证等)

/**
* 手机号码验证
*
* @author Jeanie
* @param str
* @return
*/
public static boolean isHandset(String str) {
String regex = “^[1][3,4,5,7,8]\d{9}$”;
return match(regex, str) || isHKMobile(str) || isTWMobile(str);
}

/**
 * 11位手机号码验证
 * 
 * @author Jeanie
 * @param str
 * @return
 */
public static boolean isHandsets(String str) {
    String regex = "^[1][3,4,5,7,8]\\d{9}$";
    return match(regex, str);
}

/**
 * 多个联系电话验证
 * 
 * @author Laughing
 * @param linkPhone
 * @return
 */
public static boolean isLinkPhone(String linkPhone) {
    boolean flag = true;
    if (linkPhone != null && linkPhone.trim().length() > 0) {
        String phone = linkPhone.substring(0, linkPhone.length());
        String phone2 = linkPhone.substring(linkPhone.length() - 1,
                linkPhone.length());

        String[] phones = phone.split(";");
        if (phone.indexOf(";;") != -1 || phone2.equals(";")) {
            flag=false;
        }
        for (int i = 0; i < phones.length; i++) {
            String s = phones[i];
            if (s.length() < 7) {
                flag=false;
                break;
            }
            if (!isHandset(s) && !isCurrentTelephone(s)) {
                flag=false;
                break;
            }
        }
    } else {
        flag=false;
    }
    return flag;
}

/**
 * 多个联系电话验证,不验证区号
 * 
 * @author liaopuxaio
 * @param linkPhone
 * @return
 */
public static boolean isLinkPhones(String linkPhone) {
    boolean flag = true;
    if (linkPhone != null && linkPhone.trim().length() > 0) {
        String phone = linkPhone.substring(0, linkPhone.length());
        String phone2 = linkPhone.substring(linkPhone.length() - 1,
                linkPhone.length());

        String[] phones = phone.split(";");
        if (phone.indexOf(";;") != -1 || phone2.equals(";")) {
            flag=false;
        }
        for (int i = 0; i < phones.length; i++) {
            String s = phones[i];
            if (s.length() < 7) {
                flag=false;
                break;
            }
            if (!isHandsets(s)) {
                flag=false;
                break;
            }
        }
    } else {
        flag=false;
    }
    return flag;
}


/**
 * 传真验证
 * 
 * @author Laughing
 * @param str
 * @return
 */
public static boolean isFax(String str) {
    return isCurrentTelephone(str);
}

/**
 * 邮箱验证
 * 
 * @param str
 * @return
 */
public static boolean isEmail(String str) {
    String regex = "^[0-9,a-z,A-Z,\\!\\#\\*\\&\\%\\.\\_]+@[0-9,a-z,A-Z]+\\.[0-9,a-z,A-Z]+$";
    return match(regex, str);
}

/**
 * 多个无区号座机号、有区号座机号验证
 * 
 * @author Jeanie
 * @param str
 * @return
 */
public static boolean isTelephone(String str) {
    boolean flag = true;
    String[] phones = str.split(";");
    for (String phone : phones) {
        if (!isCurrentTelephone(phone)) {
            return false;
        }
    }
    return flag;
}

/**
 * 无区号座机号、有区号座机号验证
 * 
 * @param str
 * @return
 */
public static boolean isCurrentTelephone(String str) {
    boolean flag = true;
    String regex = "^((\\d{3,5})|\\d{3,5}-)?\\d{7,10}$";
    String regex1 = "^(\\d{3,5})?\\d{7,10}$";
    if (!match(regex, str) && !match(regex1, str)
            && !isForeignMobileNO(str)) {
        flag = false;
    }
    return flag;
}

/**
 * 字符串长度验证不能超过strSize*2个字符或strSize个汉字
 * 
 * @author Jeanie
 * @param str
 * @param strSize
 * @return
 */
public static boolean vaildateStringLength(String str, Integer strSize) {
    str = str.trim();
    if (str.length() == 0 || str.equals(""))
        return false;
    int i = 0;
    char c = 0;
    int length = 0;
    for (; i < str.length(); i++) {
        c = str.charAt(i);
        if ((c >= 65 && c <= 90) || (c >= 97 && c <= 122)) {
            length += 1;
        } else if (String.valueOf(c).matches("[\\u4E00-\\u9FA5]+")) {
            length += 2;
        } else {
            length += 1;
        }
    }
    if (length <= strSize * 2)
        return true;
    return false;
}

public static Integer getStringLength(String str) {
    int len = str.length();
    str = str.replaceAll("\\p{InCJK Unified Ideographs}", "");
    str = str.replaceAll("\\p{InCJK Symbols and Punctuation}", "");
    str = str.replaceAll("\\p{InHALFWIDTH_AND_FULLWIDTH_FORMS}", "");
    int afterlen = str.length();
    int chineselength = (len - afterlen) * 2;
    return afterlen + chineselength;
}

public static Integer getStringLength(String str, boolean isDouble) {
    int len = str.length();
    str = str.replaceAll("\\p{InCJK Unified Ideographs}", "");
    str = str.replaceAll("\\p{InCJK Symbols and Punctuation}", "");
    str = str.replaceAll("\\p{InHALFWIDTH_AND_FULLWIDTH_FORMS}", "");
    int afterlen = str.length();
    int chineselength = (isDouble) ? (len - afterlen) * 2 : (len - afterlen) * 3;
    return afterlen + chineselength;
}

/**
 * 调用正则表达式
 * 
 * @author Jeanie
 * @param regex
 * @param str
 * @return
 */
public static boolean match(String regex, String str) {
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(str);
    return matcher.matches();
}

/**
 * @desc:验证是否是double类型
 * @author Clyde
 * @date:2014-11-5
 * @param str
 * @return
 */
public static boolean isDoubleValue(String str){
    if (StringUtils.isEmpty(str)) {
        return false;
    }
    boolean flag = match("^(\\d*)(.\\d*)$", str);
    if (!flag) {
        return false;
    }
    try {
        Double.valueOf(str);
    } catch (Exception e) {
        return false;
    }
    return true;
}

/**
 * 邮政编码验证
 * 
 * @param str
 * @return
 */
public static boolean isPostCode(String str) {
    String regex = "\\d{6}(?!\\d)";// 需求改动可以0开头;2014-08-22
    return match(regex, str);
}

/**
 * 判断字符串是否都是是数字
 * 
 * @param str
 * @return
 */
public static boolean isNumeric(String str) {
    return match("^[0-9]+$", str);
}

/**
 * 判断是否为编号格式
 * 
 * @param code
 * @return
 */
public static boolean isCode(String code) {
    return match("^[0-9\\.]+$", code);
}

/**
 * 判断某字符串是否都是英文字符
 * 
 * @param str
 * @return
 */
public static boolean isChar(String str) {
    return match("^[a-zA-Z]+$", str);
}

/**
 * 判断字符是否是英文字符或数字
 * 
 * @param str
 * @return
 */
public static boolean isCharOrNum(String str) {
    return match("^[a-zA-Z0-9]+$", str);
}

/**
 * 判断是否是 英文字符、数字或者点
 * 
 * @param str
 * @return
 */
public static boolean isCharNumOrPoint(String str) {
    return match("^[a-zA-Z0-9\\.]+$", str);
}

/**
 * 判断字符串是否是英文字母+数字的组合
 * 
 * @param str
 * @return
 */
public static boolean isCharNum(String str) {
    String regEx = "^(([A-Za-z]+[0-9]+)|([0-9]+[A-Za-z]+))[A-Za-z0-9]*$";
    return match(regEx, str);
}

/**
 * TODO:验证是否包含汉字
 * 
 * @param str
 * @return Date: 2014-7-3下午12:04:16
 */
public static boolean isContainChineseChar(String str) {
    String regEx = "[\u4e00-\u9fa5]";
    Pattern p = Pattern.compile(regEx);
    for (int i = 0; i < str.length(); i++) {
        if (p.matches(regEx, str.substring(i, i + 1))) {
            return true;
        }
    }
    return false;
}

/**
 * @方法描述:非空验证
 * @author Clyde
 * @param str
 * @return
 */
public static boolean isEmpty(String str) {
    if (str == null || str.trim().length() == 0) {
        return true;
    }
    return false;
}

/**
 * @方法描述:验证是否存在不合法字符
 * @author Laughing
 * @param str
 * @return boolean
 */
public static boolean isIllegal(String str) { 
    String validateString = str.replace("(", "");
    String resultString = validateString.replace(")", ""); 
    String result = resultString.replace("-", "");
    return match("^[\\u4E00-\\u9FA5\\uF900-\\uFA2D\\w\\.]*$", result);
}

public static boolean isQuoteNameIllegal(String str) {
    return match("^[\\u4E00-\\u9FA5\\uF900-\\uFA2D\\w\\-]*$", str);
}

/**
 * 去除
 * 
 * @param str
 * @return
 */
public static String replaceBlank(String str) {
    if(str==null){
        return "";
    }
    Pattern p = Pattern.compile("\\s*|\t|\r|\n");
    Matcher m = p.matcher(str);
    String result = m.replaceAll("");
    return result;
}

/**
 * @desc:自定义比较两个变量是否相等
 * @author Clyde
 * @date:2014-3-13
 * @param arg0
 * @param arg1
 * @return true为相等
 */
public static boolean compareVariable(Object arg0, Object arg1) {
    if (arg0 == arg1) {
        return true;
    }
    String str1 = "";
    String str2 = "";
    if (arg0 == null && arg1 != null) {
        str2 = arg1.toString();
    } else if (arg0 != null && arg1 == null) {
        str1 = arg0.toString();
    } else if (arg0 != null && arg1 != null) {
        str1 = arg0.toString();
        str2 = arg1.toString();
    }
    if (str1.equals(str2)) {
        return true;
    }
    return false;
}

/**
 * @desc:验证double类型的上限true为通过(验证两位小数)
 * @author Clyde
 * @date:2014-4-21
 * @param digit
 * @param places
 *            共多少位(小数加整数位)
 * @return
 */
public static boolean doValidMaxDouble(Double digit, int places) {
    return doValidMaxDouble(digit, places-2, 2);
}

/**
 * 验证double类型的上限true为通过
 * @time 2014-12-12上午11:10:23
 * @param digit(要验证的数)
 * @param number(整数位)
 * @param decimals(小数位)
 * @return
 */
public static boolean doValidMaxDouble(Double digit, int number,int decimals) {
    if (digit == null) {
        return false;
    }
    double temp = Math.pow(10, number);
    double result = temp - Math.pow(0.1,decimals);
    return Math.abs(digit) <= result;
}

/**
 * @desc:验证int类型的上限true为通过
 * @author Clyde
 * @date:2014-5-20
 * @param digit
 *            要比较的数字
 * @param places
 *            共多少位
 * @return
 */
public static boolean doValidMaxIntValue(Integer digit, int places) {
    if (digit == null) {
        return false;
    }
    double result=Math.pow(10, places) - 1;
    return digit<0?(-digit <= result):(digit <= result);
}

/**
 * @desc:验证单号是否有重复的可能
 * @author Clyde
 * @date:2014-5-10
 * @param oldStart
 * @param oldEnd
 * @param nowStart
 * @param nowEnd
 * @return
 */
public static boolean doValidEachEwbNo(String oldStart, String oldEnd,
        String nowStart, String nowEnd) {
    boolean flag = true;
    int result_1 = nowStart.compareTo(oldStart);
    int result_2 = nowStart.compareTo(oldEnd);

    int result_3 = nowEnd.compareTo(oldStart);
    int result_4 = nowEnd.compareTo(oldEnd);
    if (oldStart.length() == nowStart.length()) {
        if (result_1 >= 0 && result_2 <= 0) {
            flag = false;
        } else if (result_3 >= 0 && result_4 <= 0) {
            flag = false;
        } else if (result_1 < 0 && result_2 < 0 && result_3 > 0
                && result_4 > 0) {
            flag = false;
        }
    }
    return flag;
}

/**
 * 值长度验证
 * 
 * @param size
 * @param value
 * @return
 */
public static boolean doValidatorLength(int size, String value) {
    boolean pass = true;
    if (value.length() >= size) {
        pass = false;
    }
    return pass;
}




/**
 * @desc:验证香港手机号
 * @author Clyde
 * @date:2014-8-22
 * @param source
 * @return
 */
public static boolean isHKMobile(String source) {
    return match(
            "(^[569]\\d{7}$)|(^852[569]\\d{7}$)|(^00852[569]\\d{7}$)|(^852-[569]\\d{7}$)|(^00852-[569]\\d{7}$)",
            source);
}

/**
 * @desc:验证台湾手机号
 * @author Clyde
 * @date:2014-8-22
 * @param source
 * @return
 */
public static boolean isTWMobile(String source) {
    return match(
            "(9\\d{8}$)|(8869\\d{8}$)|(008869\\d{8}$)|(886-9\\d{8}$)|(00886-9\\d{8}$)",
            source);
}

/**
 * 国外手机号码验证
 * 
 * @param mobiles
 * @return
 */
public static boolean isForeignMobileNO(String mobiles) {
    boolean flag = false;
    try {
        Pattern p = Pattern.compile("^[\\d+]+$");
        Matcher m = p.matcher(mobiles);
        flag = m.matches();
    } catch (Exception e) {
        flag = false;
    }
    return flag;
}

/**
 * @desc:验证电话号码(包括台湾、香港)
 * @author Clyde
 * @date:2014-8-22
 * @param str
 * @return
 */
public static boolean isTel(String str) {
    boolean flag = true;
    String regex = "^((\\d{3,5})|\\d{3,5}-)?\\d{7,10}$";
    String regex1 = "^(\\d{3,5})?\\d{7,10}$";
    if (!match(regex, str) && !match(regex1, str)
            && !isForeignMobileNO(str)&&!isLaxTel(str)) {
        flag = false;
    }
    return flag;
}

/**
 * @desc:内地手机号验证
 * @author Clyde
 * @date:2014-9-25
 * @param str
 * @return
 */
public static boolean isInnerMobile(String str) {
    String regex = "^[1]+[3,4,5,8]+\\d{9}$";
    return match(regex, str);
}

/**
 * @desc:验证不严格的手机号
 * @author Clyde
 * @date:2014-9-25
 * @param str
 * @return
 */
public static boolean isLaxMobile(String str){
    String regex = "^[\\d-+()]{5,20}$";
    return match(regex, str);   
}

/**
 * @desc:验证不严格的电话
 * @author Clyde
 * @date:2014-9-25
 * @param str
 * @return
 */
public static boolean isLaxTel(String str){
    String regex = "^[\\d-+()]{5,20}$";
    return match(regex, str);   
}

/**
 * @desc:验证手机号(包括香港台湾国外)
 * @author Clyde
 * @date:2014-8-22
 * @param str
 * @return
 */
public static boolean isChinaPhone(String str) {
    if (isInnerMobile(str) ||isHKMobile(str) 
            ||isTWMobile(str)||isLaxMobile(str)) {
        return true;
    }
    return false;
}

/**
 * @desc:验证多个电话
 * @author Clyde
 * @date:2014-8-22
 * @param strPhone
 * @return
 */
public static boolean isMultiPhone(String strPhone) {
    if (!isEmpty(strPhone)) {
        if (strPhone.indexOf(";;") != -1) {
            return false;
        }
        String[] phones = strPhone.split(";");
        for (int i = 0; i < phones.length; i++) {
            String s = phones[i];
            if (s.length() > 18) {
                return false;
            }
            if (!match("^[\\d-]*$", s)) {
                return false;
            }
            if (s.indexOf("-") == 0 || s.lastIndexOf("-") == s.length() - 1) {
                return false;
            }
        }
    }
    return true;
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值