2021-03-14 07:42:01 +08:00
|
|
|
|
<?php
|
|
|
|
|
namespace catcher\library\form;
|
|
|
|
|
|
2021-04-10 21:57:51 +08:00
|
|
|
|
use FormBuilder\UI\Elm\Validate;
|
|
|
|
|
|
2021-03-14 07:42:01 +08:00
|
|
|
|
trait FormValidates
|
|
|
|
|
{
|
2021-03-29 19:51:41 +08:00
|
|
|
|
/**
|
|
|
|
|
* 正则验证
|
|
|
|
|
*
|
|
|
|
|
* @time 2021年03月06日
|
|
|
|
|
* @param string $pattern
|
2021-04-10 21:57:51 +08:00
|
|
|
|
* @return Validate
|
2021-03-29 19:51:41 +08:00
|
|
|
|
*/
|
2021-04-10 21:57:51 +08:00
|
|
|
|
public static function validatePattern(string $pattern): Validate
|
2021-03-29 19:51:41 +08:00
|
|
|
|
{
|
|
|
|
|
return self::validateStr()->pattern($pattern);
|
|
|
|
|
}
|
|
|
|
|
|
2021-03-14 07:42:01 +08:00
|
|
|
|
/**
|
2022-03-31 08:04:51 +00:00
|
|
|
|
* 纯字母验证
|
2021-03-14 07:42:01 +08:00
|
|
|
|
*
|
|
|
|
|
* @time 2021年03月12日
|
2021-04-10 21:57:51 +08:00
|
|
|
|
* @return Validate
|
2021-03-14 07:42:01 +08:00
|
|
|
|
*/
|
2021-04-10 21:57:51 +08:00
|
|
|
|
public static function validateAlpha(): Validate
|
2021-03-14 07:42:01 +08:00
|
|
|
|
{
|
2021-04-10 21:57:51 +08:00
|
|
|
|
return self::validatePattern('^[A-Za-z]+$')->message('必须为纯字母');
|
2021-03-14 07:42:01 +08:00
|
|
|
|
}
|
|
|
|
|
|
2022-03-31 08:04:51 +00:00
|
|
|
|
/**
|
|
|
|
|
* 纯数字验证
|
|
|
|
|
*
|
|
|
|
|
* @time 2022年03月31日
|
|
|
|
|
* @return Validate
|
|
|
|
|
*/
|
|
|
|
|
public static function validateNum(): Validate
|
|
|
|
|
{
|
|
|
|
|
return self::validatePattern('^\d+$')->message('必须为纯数字');
|
|
|
|
|
}
|
|
|
|
|
|
2021-03-14 07:42:01 +08:00
|
|
|
|
/**
|
|
|
|
|
* 字母和数字
|
|
|
|
|
*
|
|
|
|
|
* @time 2021年03月12日
|
2021-04-10 21:57:51 +08:00
|
|
|
|
* @return Validate
|
2021-03-14 07:42:01 +08:00
|
|
|
|
*/
|
2021-04-10 21:57:51 +08:00
|
|
|
|
public static function validateAlphaNum(): Validate
|
2021-03-14 07:42:01 +08:00
|
|
|
|
{
|
2021-04-10 21:57:51 +08:00
|
|
|
|
return self::validatePattern('^[A-Za-z0-9]+$')->message('必须为字母和数字');
|
2021-03-14 07:42:01 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
*
|
|
|
|
|
*
|
|
|
|
|
* @time 2021年03月12日
|
2021-04-10 21:57:51 +08:00
|
|
|
|
* @return Validate
|
2021-03-14 07:42:01 +08:00
|
|
|
|
*/
|
2021-04-10 21:57:51 +08:00
|
|
|
|
public static function validateAlphaDash(): Validate
|
2021-03-14 07:42:01 +08:00
|
|
|
|
{
|
2021-04-10 21:57:51 +08:00
|
|
|
|
return self::validatePattern('^[A-Za-z0-9\-\_]+$')->message('必须为字母和数字,下划线_及破折号-');
|
2021-03-14 07:42:01 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 手机号
|
|
|
|
|
*
|
|
|
|
|
* @time 2021年03月12日
|
2021-04-10 21:57:51 +08:00
|
|
|
|
* @return Validate
|
2021-03-14 07:42:01 +08:00
|
|
|
|
*/
|
2021-04-10 21:57:51 +08:00
|
|
|
|
public static function validateMobile(): Validate
|
2021-03-14 07:42:01 +08:00
|
|
|
|
{
|
2021-04-10 21:57:51 +08:00
|
|
|
|
return self::validatePattern('^1[3-9]\d{9}$')->message('请输入正确的手机号格式');
|
2021-03-14 07:42:01 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 身份证
|
|
|
|
|
*
|
|
|
|
|
* @time 2021年03月12日
|
2021-04-10 21:57:51 +08:00
|
|
|
|
* @return Validate
|
2021-03-14 07:42:01 +08:00
|
|
|
|
*/
|
2021-04-10 21:57:51 +08:00
|
|
|
|
public static function validateIdCard(): Validate
|
2021-03-14 07:42:01 +08:00
|
|
|
|
{
|
2021-04-10 21:57:51 +08:00
|
|
|
|
return self::validatePattern('(^[1-9]\d{5}(18|19|([23]\d))\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}$)')->message('身份证输入格式不正确');
|
2021-03-14 07:42:01 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 邮政编码
|
|
|
|
|
*
|
|
|
|
|
* @time 2021年03月12日
|
2021-04-10 21:57:51 +08:00
|
|
|
|
* @return Validate
|
2021-03-14 07:42:01 +08:00
|
|
|
|
*/
|
2021-04-10 21:57:51 +08:00
|
|
|
|
public static function validateZip(): Validate
|
2021-03-14 07:42:01 +08:00
|
|
|
|
{
|
2021-04-10 21:57:51 +08:00
|
|
|
|
return self::validatePattern('\d{6}')->message('请输入有效的邮政编码');
|
2021-03-14 07:42:01 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* IP 地址
|
|
|
|
|
*
|
|
|
|
|
* @time 2021年03月12日
|
2021-04-10 21:57:51 +08:00
|
|
|
|
* @return Validate
|
2021-03-14 07:42:01 +08:00
|
|
|
|
*/
|
2021-04-10 21:57:51 +08:00
|
|
|
|
public static function validateIp(): Validate
|
2021-03-14 07:42:01 +08:00
|
|
|
|
{
|
2021-04-10 21:57:51 +08:00
|
|
|
|
return self::validatePattern('((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))')->message('请输入正确的 IP 地址');
|
2021-03-14 07:42:01 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 座机
|
|
|
|
|
*
|
|
|
|
|
* @time 2021年03月12日
|
2021-04-10 21:57:51 +08:00
|
|
|
|
* @return Validate
|
2021-03-14 07:42:01 +08:00
|
|
|
|
*/
|
2021-04-10 21:57:51 +08:00
|
|
|
|
public static function validateLandLine(): Validate
|
2021-03-14 07:42:01 +08:00
|
|
|
|
{
|
2021-04-10 21:57:51 +08:00
|
|
|
|
return self::validatePattern('\d{3}-\d{8}|\d{4}-\d{7}')->message('请输入正确的座机格式');
|
2021-03-14 07:42:01 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 密码
|
|
|
|
|
*
|
|
|
|
|
* @time 2021年03月12日
|
2021-04-10 21:57:51 +08:00
|
|
|
|
* @return Validate
|
2021-03-14 07:42:01 +08:00
|
|
|
|
*/
|
2021-04-10 21:57:51 +08:00
|
|
|
|
public static function validatePassword(): Validate
|
2021-03-14 07:42:01 +08:00
|
|
|
|
{
|
2021-04-10 21:57:51 +08:00
|
|
|
|
return self::validatePattern('^[a-zA-Z]\w{5,18}$')->message('以字母开头,长度在6~18之间,只能包含字母、数字和下划线');
|
2021-03-14 07:42:01 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 强密码
|
|
|
|
|
*
|
|
|
|
|
* @time 2021年03月12日
|
2021-04-10 21:57:51 +08:00
|
|
|
|
* @return Validate
|
2021-03-14 07:42:01 +08:00
|
|
|
|
*/
|
2021-04-10 21:57:51 +08:00
|
|
|
|
public static function validateStrongPassword(): Validate
|
2021-03-14 07:42:01 +08:00
|
|
|
|
{
|
2021-04-10 21:57:51 +08:00
|
|
|
|
return self::validatePattern('^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,20}$')->message('必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-20之间');
|
2021-03-14 07:42:01 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 纯汉字
|
|
|
|
|
*
|
|
|
|
|
* @time 2021年03月12日
|
2021-04-10 21:57:51 +08:00
|
|
|
|
* @return Validate
|
2021-03-14 07:42:01 +08:00
|
|
|
|
*/
|
2021-04-10 21:57:51 +08:00
|
|
|
|
public static function validateChineseCharacter(): Validate
|
2021-03-14 07:42:01 +08:00
|
|
|
|
{
|
2021-04-10 21:57:51 +08:00
|
|
|
|
return self::validatePattern('^[\u4e00-\u9fa5]{0,}$')->message('必须为纯汉字');
|
2021-03-14 07:42:01 +08:00
|
|
|
|
}
|
|
|
|
|
}
|