package com.brilliance.isc.utils;

import java.util.regex.Pattern;

public class ValidatorUtils {

    /** CHRACTER_X 字符集 正则表达式 */
    public static final String CHRACTER_X = "[\\[}|$`^~\\]#%&*=@]";
    /** CHRACTER_X 字符集 正则表达式 Pattern */
    public static final Pattern PATTERN_CHRACTER_X =Pattern.compile(CHRACTER_X);

    /** CHRACTER_Z 字符集 正则表达式 */
    public static final String CHRACTER_Z = "[}\\[\\]|~$`^]";
    /** CHRACTER_Z 字符集 正则表达式 Pattern */
    public static final Pattern PATTERN_Z =Pattern.compile(CHRACTER_Z);

    /** CHRACTER 字符集 正则表达式 */
    public static final String CHRACTER = "[\\[}|$`^~\\]]";
    /** CHRACTER 字符集 正则表达式 Pattern*/
    public static final Pattern PATTERN_CHRACTER =Pattern.compile(CHRACTER);


    public static final String ZH = "^[\\u4E00-\\u9FA5]+$";

    public static final String EN = "^[A-Za-z]+$";

    /** 中文字符 正则表达式 */
    public static final String CHINESE = "[\\u4e00-\\u9fa5]";
    /** 中文字符 正则表达式 Pattern*/
    public static final Pattern PATTERN_CHINESE =Pattern.compile(CHINESE);

    /** 中文标点符号 正则表达式 ”，。；！？“等 */
    public static final String CHINESE_PUNCTUATION = "[\\u3002\\uff1b\\uff0c\\uff1a\\u201c\\u201d\\uff08\\uff09\\u3001\\uff1f\\u300a\\u300b]";
    /** 中文标点符号 正则表达式 Pattern*/
    public static final Pattern PATTERN_CHINESE_PUNCTUATION =Pattern.compile(CHINESE_PUNCTUATION);

    /**
     * 查找输入串 是否存在 characterX 所包含的特殊字符集
     * 原Sysmod characterX
     * @param des
     * @return
     */
    public static boolean characterX(String des) {
        return PATTERN_CHRACTER_X.matcher(des).find();
    }

    /**
     * 查找输入串 是否存在 characterZ 所包含的特殊字符集
     * characterZ
     * @param des
     * @return
     */
    public static boolean characterZ(String des) {
        return PATTERN_Z.matcher(des).find();
    }

    /**
     * 查找输入串 是否存在 character 所包含的特殊字符集
     *
     * character
     * @param des
     * @return
     */
    public static boolean character(String des) {
        return PATTERN_CHRACTER.matcher(des).find();
    }

    /**
     * 全中文匹配的正则，必须整个输入串全是中文才行
     * 注：很少用到，使用的是 pattern.matcher(charstring).macher()
     * @param des
     * @return
     */
    public static boolean isChinese(String des) {
        return Pattern.matches(ZH, des);
    }

    /**
     * 输入串是否包含中文或者中文标点符号<br>
     * 如果包含中文或中文标点则返回true，否则返回false
     *
     * @param des
     * @return
     */
    public static boolean hasChinese(String des) {
        // 如果找到中文字符或者中文标点符号，则返回true
        return PATTERN_CHINESE.matcher(des).find()||PATTERN_CHINESE_PUNCTUATION.matcher(des).find();
    }

    /**
     * 全英文匹配的正则，必须整个匹配串全部为英文才行
     * 注：很少用到，使用的是 pattern.matcher(charstring).macher()
     * @param des
     * @return
     */
    public static boolean isEnglish(String des) {
        return Pattern.matches(EN, des);
    }


}
