package org.jeecg.common.util;

import org.apache.commons.lang.StringUtils;

import java.util.regex.Pattern;

public class ValidatorUtils {
	/**
	 * 验证手机格式
	 */
	public static boolean isMobileNO(String mobiles) {
		/*
		 * 移动：134、135、136、137、138、139、150、151、157(TD)、158、159、187、188
		 * 联通：130、131、132、152、155、156、185、186 电信：133、153、180、189、（1349卫通）
		 * 总结起来就是第一位必定为1，第二位必定为3或5或8，其他位置的可以为0-9
		 */
		String telRegex = "[1][3456789]\\d{9}";// "[1]"代表第1位为数字1，"[358]"代表第二位可以为3、5、8中的一个，"\\d{9}"代表后面是可以是0～9的数字，有9位。
		if (StringUtils.isEmpty(mobiles))
			return false;
		else
			return mobiles.matches(telRegex);
	}
	/**
	 * 验证是否有效联系方式，包括手机号和固话
	 */
	public static boolean isDhNO(String mobiles) {
		String telRegex = "(^((\\(\\d{2,3}\\))|(\\d{3}\\-))?(\\(0\\d{2,3}\\)|0\\d{2,3}-?)?[1-9]\\d{6,7}(\\-\\d{1,4})?$)|(^((\\(\\d{2,3}\\))|(\\d{3}\\-))?(13|14|15|16|17|18|19)\\d{9}$)";
		if (StringUtils.isEmpty(mobiles))
			return false;
		else
			return mobiles.matches(telRegex);
	}
	/**
	 * 校验是否正整数
	 * @param data
	 * @return
	 */
	public static boolean isZInt(Object data){
		return (Pattern.compile("^[1-9]*[1-9][0-9]*$")).matcher(String.valueOf(data)).matches();
	}
	/**
	 * 校验是否非负数
	 * @param data
	 * @return
	 */
	public static boolean isZDouble(Object data){
		//String a = "/^[+]?\d+(\.\d+)?$/";
		return (Pattern.compile("^[+]?\\d+(\\.\\d+)?$")).matcher(String.valueOf(data)).matches();
	}
	/**
	 * 校验只能为数字、字母、横杆、下划线组合
	 * @param data
	 * @return
	 */
	public static boolean isNumberAndChar(Object data){
		//String a = "/^[+]?\d+(\.\d+)?$/";
		return (Pattern.compile("^[A-Za-z0-9_-]+$")).matcher(String.valueOf(data)).matches();
	}
	/**
	 * 校验是否有效身份证号
	 * @param idCardNo
	 * @return
	 */
	public static boolean isIdCardNo(String idCardNo){
		return IdcardValidator.isValidatedAllIdcard(idCardNo);
	}
	
}
