{"id":17274304,"url":"https://github.com/arifszn/laravel-advanced-validation","last_synced_at":"2025-04-14T08:53:18.377Z","repository":{"id":43398741,"uuid":"432226611","full_name":"arifszn/laravel-advanced-validation","owner":"arifszn","description":"Laravel advanced validation rules for real-life scenarios.","archived":false,"fork":false,"pushed_at":"2022-03-11T11:15:01.000Z","size":122,"stargazers_count":14,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-27T22:23:19.853Z","etag":null,"topics":["laravel","laravel-advanced-validation","laravel-framework","laravel-package","laravel-rule","laravel-ruleset","laravel-validation","laravel-validation-library","laravel-validation-message","laravel-validation-rules","laravel-validator","validation","validation-library","validation-rules","validation-tool","validator"],"latest_commit_sha":null,"homepage":"https://packagist.org/packages/arifszn/laravel-advanced-validation","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/arifszn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-11-26T15:39:31.000Z","updated_at":"2024-08-12T23:34:34.000Z","dependencies_parsed_at":"2022-08-24T07:50:59.563Z","dependency_job_id":null,"html_url":"https://github.com/arifszn/laravel-advanced-validation","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arifszn%2Flaravel-advanced-validation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arifszn%2Flaravel-advanced-validation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arifszn%2Flaravel-advanced-validation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arifszn%2Flaravel-advanced-validation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arifszn","download_url":"https://codeload.github.com/arifszn/laravel-advanced-validation/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248852107,"owners_count":21171839,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["laravel","laravel-advanced-validation","laravel-framework","laravel-package","laravel-rule","laravel-ruleset","laravel-validation","laravel-validation-library","laravel-validation-message","laravel-validation-rules","laravel-validator","validation","validation-library","validation-rules","validation-tool","validator"],"created_at":"2024-10-15T08:53:36.603Z","updated_at":"2025-04-14T08:53:18.351Z","avatar_url":"https://github.com/arifszn.png","language":"PHP","funding_links":["https://www.buymeacoffee.com/arifszn"],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eLaravel Advanced Validation\u003c/h1\u003e\n\u003cp align=\"center\"\u003eLaravel advanced validation rules for real-life scenarios.\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://packagist.org/packages/arifszn/laravel-advanced-validation\"\u003e\u003cimg src=\"https://img.shields.io/packagist/v/arifszn/laravel-advanced-validation\"/\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/arifszn/laravel-advanced-validation/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/arifszn/laravel-advanced-validation\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\n## Installation\n\nInstall via \u003ca href=\"https://packagist.org/packages/arifszn/laravel-advanced-validation\"\u003ecomposer\u003c/a\u003e\n\n```bash\ncomposer require arifszn/laravel-advanced-validation\n```\n\nLaravel uses Package Auto-Discovery, so doesn't require you to manually add the ServiceProvider.\n\n\n## Translations\n\nIf you wish to edit the package translations, you can run the following command to publish them into your `resources/lang` folder\n\n```bash\nphp artisan vendor:publish --provider=\"Arifszn\\AdvancedValidation\\ServiceProvider\"\n```\n\n## Custom Error Message\n\nYou can specify the error message on the fly when declaring the rules. Simple pass the error message parameter.\n\n```php\nuse Arifszn\\AdvancedValidation\\Rules\\Username;\n\npublic function rules()\n{\n    return [\n        'foo' =\u003e [new Username('Your custom error message')],\n    ];\n}\n```\n\n## Available Validation Rules\n\n- [`Ascii`](#ascii)\n- [`Base64 Image`](#base64image)\n- [`Base64 String`](#base64string)\n- [`BIC`](#bic)\n- [`Btc Address`](#btcaddress)\n- [`Credit Card`](#creditcard)\n- [`Data URI`](#datauri)\n- [`Divisible By`](#divisibleby)\n- [`Ethereum Address`](#ethereumaddress)\n- [`Float Number`](#floatnumber)\n- [`Hash`](#hash)\n- [`Image URL`](#imageurl)\n- [`JWT`](#jwt)\n- [`Name`](#name)\n- [`Phone`](#phone)\n- [`Username`](#username)\n- [`Without Spaces`](#withoutspaces)\n\n\n### `Ascii`\n\nThe field under validation must contain ASCII chars only.\n\n```\npublic Arifszn\\AdvancedValidation\\Rules\\Ascii::__construct(string $errorMessage = null)\n```\n\n```php\nuse Arifszn\\AdvancedValidation\\Rules\\Ascii;\n\npublic function rules()\n{\n    return [\n        'foo' =\u003e [new Ascii()],\n    ];\n}\n```\n\n### `Base64Image`\n\nThe field under validation must be a Base64 encoded image.\n\n```\npublic Arifszn\\AdvancedValidation\\Rules\\Base64Image::__construct(string $errorMessage = null)\n```\n\n```php\nuse Arifszn\\AdvancedValidation\\Rules\\Base64Image;\n\npublic function rules()\n{\n    return [\n        'avatar' =\u003e [new Base64Image()],\n    ];\n}\n```\n\n### `Base64String`\n\nThe field under validation must be a Base64 encoded string.\n\n```\npublic Arifszn\\AdvancedValidation\\Rules\\Base64String::__construct(string $errorMessage = null)\n```\n\n```php\nuse Arifszn\\AdvancedValidation\\Rules\\Base64String;\n\npublic function rules()\n{\n    return [\n        'foo' =\u003e [new Base64String()],\n    ];\n}\n```\n\n### `BIC`\n\nThe field under validation must be a BIC([Business Identifier Code](https://en.wikipedia.org/wiki/ISO_9362)) or SWIFT code.\n\n```\npublic Arifszn\\AdvancedValidation\\Rules\\BIC::__construct(string $errorMessage = null)\n```\n\n```php\nuse Arifszn\\AdvancedValidation\\Rules\\BIC;\n\npublic function rules()\n{\n    return [\n        'foo' =\u003e [new BIC()],\n    ];\n}\n```\n\n### `BtcAddress`\n\nThe field under validation must be a valid BTC address.\n\n```\npublic Arifszn\\AdvancedValidation\\Rules\\BtcAddress::__construct(string $errorMessage = null)\n```\n\n```php\nuse Arifszn\\AdvancedValidation\\Rules\\BtcAddress;\n\npublic function rules()\n{\n    return [\n        'foo' =\u003e [new BtcAddress()],\n    ];\n}\n```\n\n### `CreditCard`\n\nThe field under validation must be a valid credit card number.\n\n```\npublic Arifszn\\AdvancedValidation\\Rules\\CreditCard::__construct(string $errorMessage = null)\n```\n\n```php\nuse Arifszn\\AdvancedValidation\\Rules\\CreditCard;\n\npublic function rules()\n{\n    return [\n        'foo' =\u003e [new CreditCard()],\n    ];\n}\n```\n\n### `DataURI`\n\nThe field under validation must have [data uri format](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs).\n\n```\npublic Arifszn\\AdvancedValidation\\Rules\\DataURI::__construct(string $errorMessage = null)\n```\n\n```php\nuse Arifszn\\AdvancedValidation\\Rules\\DataURI;\n\npublic function rules()\n{\n    return [\n        'foo' =\u003e [new DataURI()],\n    ];\n}\n```\n\n### `DivisibleBy`\n\nThe field under validation must be divisible by the given number.\n\n```\npublic Arifszn\\AdvancedValidation\\Rules\\DivisibleBy::__construct(int $number, string $errorMessage = null)\n```\n\n```php\nuse Arifszn\\AdvancedValidation\\Rules\\DivisibleBy;\n\npublic function rules()\n{\n    return [\n        'foo' =\u003e [new DivisibleBy(2)],\n    ];\n}\n```\n\n### `EthereumAddress`\nThe field under validation must be an [Ethereum](https://ethereum.org/en/) address. Does not validate address checksums.\n\n```\npublic Arifszn\\AdvancedValidation\\Rules\\EthereumAddress::__construct(string $errorMessage = null)\n```\n\n```php\nuse Arifszn\\AdvancedValidation\\Rules\\EthereumAddress;\n\npublic function rules()\n{\n    return [\n        'foo' =\u003e [new EthereumAddress()],\n    ];\n}\n```\n\n### `FloatNumber`\n\nThe field under validation must be a float number.\n\n```\npublic Arifszn\\AdvancedValidation\\Rules\\FloatNumber::__construct(string $errorMessage = null)\n```\n\n```php\nuse Arifszn\\AdvancedValidation\\Rules\\FloatNumber;\n\npublic function rules()\n{\n    return [\n        'foo' =\u003e [new FloatNumber()],\n    ];\n}\n```\n\n### `Hash`\n\nThe field under validation must be a hash of type algorithm.\n\nAlgorithm is one of `'md4', 'md5', 'sha1', 'sha256', 'sha384', 'sha512', 'ripemd128', 'ripemd160', 'tiger128', 'tiger160', 'tiger192', 'crc32', 'crc32b'`.\n\n```\npublic Arifszn\\AdvancedValidation\\Rules\\Hash::__construct(string $algorithm, string $errorMessage = null)\n```\n\n```php\nuse Arifszn\\AdvancedValidation\\Rules\\Hash;\n\npublic function rules()\n{\n    return [\n        'foo' =\u003e [new Hash('md4')],\n    ];\n}\n```\n\n### `ImageURL`\n\nThe field under validation must be a valid image URL.\n\n✓ https://www.php.net/images/logos/php-logo.png \\\n✕ https://imaginarysite123.com/invalid.png\n\n```\npublic Arifszn\\AdvancedValidation\\Rules\\ImageURL::__construct(string $errorMessage = null)\n```\n\n```php\nuse Arifszn\\AdvancedValidation\\Rules\\ImageURL;\n\npublic function rules()\n{\n    return [\n        'avatar' =\u003e [new ImageURL()],\n    ];\n}\n```\n\n### `JWT`\n\nThe field under validation must have a valid format of JWT ([JSON Web Token](https://en.wikipedia.org/wiki/JSON_Web_Token)).\n\n```\npublic Arifszn\\AdvancedValidation\\Rules\\Jwt::__construct(string $errorMessage = null)\n```\n\n```php\nuse Arifszn\\AdvancedValidation\\Rules\\Jwt;\n\npublic function rules()\n{\n    return [\n        'foo' =\u003e [new Jwt()],\n    ];\n}\n```\n\n### `Name`\n\nThe field under validation must be a valid name.\n\n- no emoji\n- no number (if `$allowNumber` flag is true, it will accept numbers, default is false)\n- special characters are allowed (restricting special characters will cause false-negative for names like `Martin Luther King, Jr.` or `李小龍`)\n\n```\npublic Arifszn\\AdvancedValidation\\Rules\\Name::__construct(bool $allowNumber = false, string $errorMessage = null)\n```\n\n```php\nuse Arifszn\\AdvancedValidation\\Rules\\Name;\n\npublic function rules()\n{\n    return [\n        'name' =\u003e [new Name()],\n    ];\n}\n```\n\n### `Phone`\n\nThe field under validation must be a valid phone number.\n\n✓ +x-xxx-xxx-xxxx \\\n✓ +xxxxxxxxxxx \\\n✓ (xxx) xxx-xxxx \\\n✓ xxxxxxxxxx\n\n```\npublic Arifszn\\AdvancedValidation\\Rules\\Phone::__construct(string $errorMessage = null)\n```\n\n```php\nuse Arifszn\\AdvancedValidation\\Rules\\Phone;\n\npublic function rules()\n{\n    return [\n        'foo' =\u003e [new Phone()],\n    ];\n}\n```\n\n### `Username`\n\nThe field under validation must be a valid username.\n\n- starts with a letter (alpha)\n- only alpha-numeric (a-z, A-Z, 0-9), underscore, minus and dot\n- multiple underscores, minus and are not allowed (-- or __ or ..)\n- underscores, minus and dot are not allowed at the beginning or end\n\n```\npublic Arifszn\\AdvancedValidation\\Rules\\Username::__construct(string $errorMessage = null)\n```\n\n```php\nuse Arifszn\\AdvancedValidation\\Rules\\Username;\n\npublic function rules()\n{\n    return [\n        'username' =\u003e [new Username()],\n    ];\n}\n```\n\n### `WithoutSpaces`\n\nThe field under validation must not contain spaces.\n\n```\npublic Arifszn\\AdvancedValidation\\Rules\\WithoutSpaces::__construct(string $errorMessage = null)\n```\n\n```php\nuse Arifszn\\AdvancedValidation\\Rules\\WithoutSpaces;\n\npublic function rules()\n{\n    return [\n        'foo' =\u003e [new WithoutSpaces()],\n    ];\n}\n```\n\n## Tips\n\nIf you want to use the rules as strings and use them globally e.g. `'foo' =\u003e ['phone']`, you can do so by adding them to the boot method of your project's **AppServiceProvider**.\n\n```php\n\u003c?php\n\nnamespace App\\Providers;\n\nuse Illuminate\\Support\\ServiceProvider;\nuse Illuminate\\Support\\Facades\\Validator;\nuse Arifszn\\AdvancedValidation\\Rules\\Phone;\n\nclass AppServiceProvider extends ServiceProvider\n{\n    public function boot()\n    {\n        Validator::extend(\n            'phone',\n            'Arifszn\\AdvancedValidation\\Rules\\Phone@passes',\n            (new Phone())-\u003emessage()\n        );\n    }\n}\n```\n\n## Testing\n\n```bash\ncomposer test\n```\n\n## Contributing\n\nAny contributors who want to make this project better can make contributions, which will be greatly appreciated. To contribute, clone this repo locally and commit your code to a new branch. Feel free to create an issue or make a pull request.\n\n\n## Credits\n\n- [validator.js](https://github.com/validatorjs/validator.js)\n\n\n## Support\n\n\u003ca href=\"https://www.buymeacoffee.com/arifszn\" target=\"_blank\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/arifszn/arifszn/main/assets/bmc-button.png\" alt=\"Buy Me A Coffee\" style=\"height: 60px !important;width: 217px !important;\" \u003e\n\u003c/a\u003e\n\n\n## License\n\nThis package is licensed under the [MIT License](https://github.com/arifszn/laravel-advanced-validation/blob/main/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farifszn%2Flaravel-advanced-validation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farifszn%2Flaravel-advanced-validation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farifszn%2Flaravel-advanced-validation/lists"}