package com.hdkj.lt.base.constants;

/**
 * @Description: 正则表达式常量类
 * @Author: wenhao
 * @Create: 2022/10/18 11:04
 * @Version: 1.0
 */
public final class RegexPatternConstant {
    // 只允许中文、英文、数字包括下划线
    public final static String BASIC_REGEX = "^[\\u4E00-\\u9FA5A-Za-z0-9_]+$";

    // Email地址
    public final static String EMAIL_REGEX = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";

    // URL格式
    public final static String URL_REGEX = "[a-zA-z]+:// [^\\s]*";

    // 移动电话
    public final static String MOBILE_PHONE_REGEX = "^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\\d{8}$";

    // 固定电话
    public final static String FIX_PHONE_REGEX = "\\d{3}-\\d{8}|\\d{4}-\\d{7}";

    // 身份证格式
    public final static String IDENTITY_REGEX = "(^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}[0-9Xx]$)|(^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$)";

    // 日期（年月日）格式
    public final static String NORM_DATE_REGEX = "^\\d{4}-\\d{1,2}-\\d{1,2}";

    // 时间（时分秒）格式
    public final static String NORM_TIME_REGEX = "^\\d{1,2}:\\d{1,2}:\\d{1,2}";

    // 日期（年月日时分秒）格式
    public final static String NORM_DATETIME_REGEX = "^\\d{4}-\\d{1,2}-\\d{1,2}\\s\\d{1,2}:\\d{1,2}:\\d{1,2}";

    // 账号必须以字母开头，允许5-16字节，允许字母数字下划线
    public final static String ACCOUNT_REGEX = "^[a-zA-Z][a-zA-Z0-9_]{4,15}$";

    // 密码必须包含字母、数字和特殊字符的组合，长度在8-16之间
    public final static String CIPHER_REGEX = "^(?=.*\\d)(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{8,16}$";

    // 中文内容格式
    public final static String CHINESE_REGEX = "[\\u4e00-\\u9fa5]{0,}$";

    // 双字节内容格式
    public final static String DOUBLE_BYTE_REGEX = "[^\\x00-\\xff]{0,}$";

    // 邮政编码格式
    public final static String ZIP_CODE_REGEX = "[1-9]\\d{5}(?!\\d)";

    // IP地址格式
    public final static String IP_ADDRESS_REGEX = "\\d+\\.\\d+\\.\\d+\\.\\d+";

    // 非零数字格式
    public final static String NONZERO_NUMBER_REGEX = "^[1-9]\\d{0,}$";

}
