package com.xinelu.common.utils.regex;

import com.xinelu.common.exception.ServiceException;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;

import java.util.regex.Pattern;

/**
 * @Description 正则表达式工具类
 * @Author 纪寒
 * @Date 2022-08-24 13:58:48
 * @Version 1.0
 */
@Component
public class RegexUtil {

    /**
     * 校验手机号码
     *
     * @param phone 手机号码
     * @return 校验结果
     */
    public boolean regexPhone(String phone) {
        if (StringUtils.isBlank(phone)) {
            throw new ServiceException("手机号码不能为空！");
        }
        //校验手机号
        String regex = "^(((13[0-9]{1})|(14[0-9]{1})|(15[0-9]{1})|(16[2567]{1})|(17[0-9]{1})|(18[0-9]{1})|(19[0-9]{1}))+\\d{8})$";
        return Pattern.matches(regex, phone);
    }

    /**
     * 校验身份证号码
     *
     * @param cardNo 身份证号码
     * @return 校验结果
     */
    public boolean regexCardNo(String cardNo) {
        if (StringUtils.isBlank(cardNo)) {
            throw new ServiceException("身份证号不能为空！");
        }
        //校验身份证号码
        String regex = "(^[1-9]\\d{5}(18|19|20)\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$)|" +
                "(^[1-9]\\d{5}\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}$)";
        return Pattern.matches(regex, cardNo);
    }

    /**
     * 校验座机手机号码
     *
     * @param seatNumber 座机手机号码
     * @return 校验结果
     */
    public boolean regexSeatNumber(String seatNumber) {
        if (StringUtils.isBlank(seatNumber)) {
            throw new ServiceException("手机号码不能为空！");
        }
        //校验座机手机号
        String regex = "^(([0-9]{4,13}))";
        return Pattern.matches(regex, seatNumber);
    }
}
