arifszn / laravel-advanced-validation
适用于现实场景的 Laravel 高级验证规则。
Requires
- php: ^7.2|^8.0
- illuminate/support: ^6.0|^7.0|^8.0|^9.0
Requires (Dev)
- orchestra/testbench: ^6.23
- phpunit/phpunit: ^9.5
README
适用于现实场景的 Laravel 高级验证规则。
安装
通过 composer 安装
composer require arifszn/laravel-advanced-validation
Laravel 使用包自动发现,因此不需要您手动添加 ServiceProvider。
翻译
如果您想编辑包的翻译,可以运行以下命令将它们发布到您的 resources/lang
文件夹
php artisan vendor:publish --provider="Arifszn\AdvancedValidation\ServiceProvider"
自定义错误消息
在声明规则时,您可以动态指定错误消息。简单传递错误消息参数。
use Arifszn\AdvancedValidation\Rules\Username; public function rules() { return [ 'foo' => [new Username('Your custom error message')], ]; }
可用的验证规则
Ascii
Base64 Image
Base64 String
BIC
Btc Address
Credit Card
Data URI
Divisible By
Ethereum Address
Float Number
Hash
Image URL
JWT
Name
Phone
Username
Without Spaces
Ascii
正在验证的字段必须只包含 ASCII 字符。
public Arifszn\AdvancedValidation\Rules\Ascii::__construct(string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\Ascii; public function rules() { return [ 'foo' => [new Ascii()], ]; }
Base64Image
正在验证的字段必须是一个 Base64 编码的图像。
public Arifszn\AdvancedValidation\Rules\Base64Image::__construct(string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\Base64Image; public function rules() { return [ 'avatar' => [new Base64Image()], ]; }
Base64String
正在验证的字段必须是一个 Base64 编码的字符串。
public Arifszn\AdvancedValidation\Rules\Base64String::__construct(string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\Base64String; public function rules() { return [ 'foo' => [new Base64String()], ]; }
BIC
正在验证的字段必须是一个 BIC(或 SWIFT)代码。
public Arifszn\AdvancedValidation\Rules\BIC::__construct(string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\BIC; public function rules() { return [ 'foo' => [new BIC()], ]; }
BtcAddress
正在验证的字段必须是一个有效的 BTC 地址。
public Arifszn\AdvancedValidation\Rules\BtcAddress::__construct(string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\BtcAddress; public function rules() { return [ 'foo' => [new BtcAddress()], ]; }
CreditCard
正在验证的字段必须是一个有效的信用卡号。
public Arifszn\AdvancedValidation\Rules\CreditCard::__construct(string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\CreditCard; public function rules() { return [ 'foo' => [new CreditCard()], ]; }
DataURI
正在验证的字段必须具有 data uri 格式。
public Arifszn\AdvancedValidation\Rules\DataURI::__construct(string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\DataURI; public function rules() { return [ 'foo' => [new DataURI()], ]; }
DivisibleBy
正在验证的字段必须可以被给定数字整除。
public Arifszn\AdvancedValidation\Rules\DivisibleBy::__construct(int $number, string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\DivisibleBy; public function rules() { return [ 'foo' => [new DivisibleBy(2)], ]; }
EthereumAddress
正在验证的字段必须是一个 Ethereum 地址。不验证地址校验和。
public Arifszn\AdvancedValidation\Rules\EthereumAddress::__construct(string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\EthereumAddress; public function rules() { return [ 'foo' => [new EthereumAddress()], ]; }
FloatNumber
正在验证的字段必须是一个浮点数。
public Arifszn\AdvancedValidation\Rules\FloatNumber::__construct(string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\FloatNumber; public function rules() { return [ 'foo' => [new FloatNumber()], ]; }
Hash
正在验证的字段必须是一个算法哈希。
算法可以是以下之一:'md4', 'md5', 'sha1', 'sha256', 'sha384', 'sha512', 'ripemd128', 'ripemd160', 'tiger128', 'tiger160', 'tiger192', 'crc32', 'crc32b'
。
public Arifszn\AdvancedValidation\Rules\Hash::__construct(string $algorithm, string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\Hash; public function rules() { return [ 'foo' => [new Hash('md4')], ]; }
ImageURL
正在验证的字段必须是一个有效的图像 URL。
✓ https://php.ac.cn/images/logos/php-logo.png
✕ https://imaginarysite123.com/invalid.png
public Arifszn\AdvancedValidation\Rules\ImageURL::__construct(string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\ImageURL; public function rules() { return [ 'avatar' => [new ImageURL()], ]; }
JWT
正在验证的字段必须具有有效的 JWT (JSON Web Token) 格式。
public Arifszn\AdvancedValidation\Rules\Jwt::__construct(string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\Jwt; public function rules() { return [ 'foo' => [new Jwt()], ]; }
Name
正在验证的字段必须是一个有效的名称。
- 没有表情符号
- 没有数字(如果
$allowNumber
标志为 true,则接受数字,默认为 false) - 允许特殊字符(限制特殊字符将导致像
Martin Luther King, Jr.
或李小龍
这样的名称出现假阴性)
public Arifszn\AdvancedValidation\Rules\Name::__construct(bool $allowNumber = false, string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\Name; public function rules() { return [ 'name' => [new Name()], ]; }
Phone
正在验证的字段必须是一个有效的电话号码。
✓ +x-xxx-xxx-xxxx
✓ +xxxxxxxxxxx
✓ (xxx) xxx-xxxx
✓ xxxxxxxxxx
public Arifszn\AdvancedValidation\Rules\Phone::__construct(string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\Phone; public function rules() { return [ 'foo' => [new Phone()], ]; }
Username
正在验证的字段必须是一个有效的用户名。
- 以字母(alpha)开头
- 仅字母数字(a-z,A-Z,0-9),下划线,减号和点
- 不允许多个下划线,减号和点 (-- 或 __ 或 ..)
- 下划线,减号和点不允许在开头或结尾
public Arifszn\AdvancedValidation\Rules\Username::__construct(string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\Username; public function rules() { return [ 'username' => [new Username()], ]; }
WithoutSpaces
正在验证的字段不得包含空格。
public Arifszn\AdvancedValidation\Rules\WithoutSpaces::__construct(string $errorMessage = null)
use Arifszn\AdvancedValidation\Rules\WithoutSpaces; public function rules() { return [ 'foo' => [new WithoutSpaces()], ]; }
提示
如果您想将规则作为字符串使用并全局应用,例如 'foo' => ['phone']
,可以通过将它们添加到您项目中的 AppServiceProvider 的 boot 方法来实现。
<?php namespace App\Providers; use Illuminate\Support\ServiceProvider; use Illuminate\Support\Facades\Validator; use Arifszn\AdvancedValidation\Rules\Phone; class AppServiceProvider extends ServiceProvider { public function boot() { Validator::extend( 'phone', 'Arifszn\AdvancedValidation\Rules\Phone@passes', (new Phone())->message() ); } }
测试
composer test
贡献
任何希望使这个项目变得更好的贡献者都可以做出贡献,这将被非常感激。要贡献,请本地克隆此仓库并将您的代码提交到一个新的分支。请随时创建问题或发起拉取请求。
致谢
支持

许可证
本软件包遵循 MIT 许可证。