{"id":15184509,"url":"https://github.com/ghiscoding/angular-validation","last_synced_at":"2025-10-01T23:30:37.444Z","repository":{"id":13807468,"uuid":"16503510","full_name":"ghiscoding/angular-validation","owner":"ghiscoding","description":"AngularJS Form Validation made simple","archived":true,"fork":false,"pushed_at":"2019-06-21T01:20:49.000Z","size":1358,"stargazers_count":233,"open_issues_count":0,"forks_count":56,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-09-22T13:09:15.101Z","etag":null,"topics":["angularjs","validation"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/ghiscoding.png","metadata":{"files":{"readme":"readme.md","changelog":"changelog.txt","contributing":null,"funding":null,"license":"MIT-license.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-02-04T05:40:28.000Z","updated_at":"2025-09-10T13:26:52.000Z","dependencies_parsed_at":"2022-09-06T13:10:57.843Z","dependency_job_id":null,"html_url":"https://github.com/ghiscoding/angular-validation","commit_stats":null,"previous_names":[],"tags_count":81,"template":false,"template_full_name":null,"purl":"pkg:github/ghiscoding/angular-validation","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghiscoding%2Fangular-validation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghiscoding%2Fangular-validation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghiscoding%2Fangular-validation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghiscoding%2Fangular-validation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ghiscoding","download_url":"https://codeload.github.com/ghiscoding/angular-validation/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghiscoding%2Fangular-validation/sbom","scorecard":{"id":425724,"data":{"date":"2025-08-11","repo":{"name":"github.com/ghiscoding/angular-validation","commit":"3a1c83aac30ccb2f3631c9bf131c63223a82443d"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.4,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":3,"reason":"Found 7/21 approved changesets -- score normalized to 3","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: MIT-license.txt:0","Info: FSF or OSI recognized license: MIT License: MIT-license.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 16 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-19T02:11:24.982Z","repository_id":13807468,"created_at":"2025-08-19T02:11:24.983Z","updated_at":"2025-08-19T02:11:24.983Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277742275,"owners_count":25869284,"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","status":"online","status_checked_at":"2025-09-30T02:00:09.208Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["angularjs","validation"],"created_at":"2024-09-27T17:03:41.709Z","updated_at":"2025-10-01T23:30:37.167Z","avatar_url":"https://github.com/ghiscoding.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Angular Validation (Directive / Service)\n`Version: 1.5.28`\n\n## Project in Life Support\n#### still accepting PR for any bug fix\n**Also note that only NPM will updated with new releases when PR get merged**\n\nThis project is now in Life Support since most of us already moved to newer version of Angular. However I do want to point out that if you still use the lib and find a Bug, I certainly still welcome PR (Pull Request) to address bug fixes. So I'm not totally gone but I won't personally invest more time in the lib. Also note that the lib will not be rewritten to support Angular 2+\n\nOn a totally different note, I'm still very active in the Angular 4+ world (even Aurelia world) and you might be interested in looking at some of my other libraries.\n- [Angular-Slickgrid](https://github.com/ghiscoding/Angular-Slickgrid)\n- [Angular Markdown Preview Editor](https://github.com/ghiscoding/angular-markdown-editor)\n\nIn the Aurelia world\n- [Aurelia-Slickgrid](https://github.com/ghiscoding/aurelia-slickgrid)\n- [Aurelia Bootstrap Plugin](https://github.com/ghiscoding/Aurelia-Bootstrap-Plugins)\n\n---\n\n### Forms Validation with Angular made easy!\n##### (Concept comes from the amazing Laravel)\n\nForm validation after user stop typing (debounce default of 1sec). Angular-Validation is an angular directive/service with locales (languages) with a very simple approach of defining your `validation=\"\"` directly within your element to validate (input, textarea, etc) and...that's it!!! The directive/service will take care of the rest!\n\nThe base concept is not new, it comes from the easy form input validation approach of Laravel Framework as well as PHP Gump Validation. They are both PHP frameworks and use a very simple approach, so why not re-use the same concept over Angular as well? Well it's now made available with a few more extras.\n\nFor a smoother user experience, I also added validation on inactivity (timer/debounce). So validation will not bother the user while he is still typing... though as soon as the user pauses for a certain amount of time, then validation comes into play. It's worth knowing that this inactivity timer is only available while typing, if user focuses away from his input (onBlur) it will then validate instantly.\n\nSupporting AngularJS 1.3.x-1.5.x branch *(current code should work with 1.2.x just the same, but is no more verified)*\n\nNow support \u003cb\u003eService\u003c/b\u003e using the same functionalities as the \u003cb\u003eDirective\u003c/b\u003e.\nHuge rewrite to have a better code separation and also adding support to Service functionalities. Specifically the `validation-rules` was separated to add rules without affecting the core while `validation-common` is for shared functions (shared by Directive/Service).\n\n[Validation Summary](https://github.com/ghiscoding/angular-validation/wiki/Validation-Summary) was also recently added to easily show all validation errors that are still active on the form and you can also use 2 ways of dealing with the [Submit and Validation](https://github.com/ghiscoding/angular-validation/wiki/Form-Submit-and-Validation) button.\n\nFor more reasons to use it, see the answered question of: [Why Use It?](#whyuseit)\n\nIf you like the Angular-Validation project and you use it, please click on the :star: and add it as a favorite. The more star ratings there is, the more chances it could be found by other users inside the popular trend section. That is the only support I ask you... thanks and enjoy it ;)\n\n\u003ca name=\"plunker\"\u003e\u003c/a\u003e\n## Live Demo\n[Plunker](http://plnkr.co/jADq7H)\n\n## Tested with Protractor\nAngular-validation now has a full set of **End-to-End tests** with **Protractor**, there is over 1800+ assertions, it starts by testing the original live demo page and then goes on with a complete test suite of All Validators in both the Angular-Validation Directive and Service.\n\n\u003ca name=\"whyuseit\"\u003e\u003c/a\u003e\nWhy use angular-validation?\n-----\nAngular-validation was develop with simplicity and DRY (Don't Repeat Yourself) concept in mind.\nYou can transform this:\n```html\n\u003cinput type=\"text\" name=\"username\" ng-model=\"user.username\" ng-minlength=\"3\" ng-maxlength=\"8\" required /\u003e\n\u003cdiv ng-show=\"form.$submitted || form.user.$touched\"\u003e\n  \u003cspan ng-show=\"userForm.username.$error.minlength\" class=\"help-block\"\u003eUsername is too short.\u003c/p\u003e\n  \u003cspan ng-show=\"userForm.username.$error.maxlength\" class=\"help-block\"\u003eUsername is too long.\u003c/p\u003e\n\u003c/div\u003e\n\u003cinput type=\"text\" name=\"firstname\" ng-model=\"user.firstname\" ng-minlength=\"3\" ng-maxlength=\"50\" required /\u003e\n\u003cdiv ng-show=\"form.$submitted || form.user.$touched\"\u003e\n  \u003cspan ng-show=\"userForm.firstname.$error.minlength\" class=\"help-block\"\u003eFirstname is too short.\u003c/p\u003e\n  \u003cspan ng-show=\"userForm.firstname.$error.maxlength\" class=\"help-block\"\u003eFirstname is too long.\u003c/p\u003e\n\u003c/div\u003e\n\u003cinput type=\"text\" name=\"lastname\" ng-model=\"user.lastname\" ng-minlength=\"2\" ng-maxlength=\"50\" required /\u003e\n\u003cdiv ng-show=\"form.$submitted || form.user.$touched\"\u003e\n  \u003cspan ng-show=\"userForm.lastname.$error.minlength\" class=\"help-block\"\u003eLastname is too short.\u003c/p\u003e\n  \u003cspan ng-show=\"userForm.lastname.$error.maxlength\" class=\"help-block\"\u003eLastname is too long.\u003c/p\u003e\n\u003c/div\u003e\n```\ninto the following (errors will automatically be displayed in your chosen locale translation):\n```html\n\u003cinput type=\"text\" name=\"username\" ng-model=\"user.username\" validation=\"min_len:3|max_len:8|required\"  /\u003e\n\u003cinput type=\"text\" name=\"firstname\" ng-model=\"user.firstname\" validation=\"alpha_dash|min_len:3|max_len:50|required\"  /\u003e\n\u003cinput type=\"text\" name=\"lastname\" ng-model=\"user.lastname\" validation=\"alpha_dash|min_len:2|max_len:50|required\"  /\u003e\n```\nThe Angular-Validation will create, by itself, the necessary error message. Now imagine your form having 10 inputs, using the documented Angular way will end up being 30 lines of code, while on the other hand `Angular-Validation` will stay with 10 lines of code, no more... so what are you waiting for? Use Angular-Validation!!!  Don't forget to add it to your favorite, click on the :star: on top :)\n\nLet's not forget the [Validation Summary](https://github.com/ghiscoding/angular-validation/wiki/Validation-Summary) which is also a great and useful way of displaying your errors to the user.\n\nAnother awesome feature recently added is the [Wiki - Remote Validation (AJAX)](https://github.com/ghiscoding/angular-validation/wiki/Remote-Validation-(AJAX)) which is useful for backend server validation.\n\nAgain another recently added feature, external 3rd party addon validation (like ngTagsInput or Angular Multi-Select), take a look at the [Wiki - 3rd party addon validation](https://github.com/ghiscoding/angular-validation/wiki/3rd-Party-Addons)\n\n\n## Angular-Validation Wiki\nAll the documentation has been moved to the Wiki section, see the [github wiki](https://github.com/ghiscoding/angular-validation/wiki) for more explanation. If you just started with the library, then the most important page to read would be the [HOWTO - Step by Step](https://github.com/ghiscoding/angular-validation/wiki/HOWTO---Step-by-Step)\n\n**Wiki Contents**\n* [Angular-Validation Wiki](https://github.com/ghiscoding/angular-validation/wiki)\n* Installation\n    * [HOWTO - Step by Step](https://github.com/ghiscoding/angular-validation/wiki/HOWTO---Step-by-Step)\n    * [Bower/NPM/NuGet Packages](https://github.com/ghiscoding/angular-validation/wiki/Download-and-Install-it)\n    * [Locales (languages)](https://github.com/ghiscoding/angular-validation/wiki/Locales-(languages))\n* Code Samples\n    * [3rd Party Addon Validation](https://github.com/ghiscoding/angular-validation/wiki/3rd-Party-Addons)\n    * [Directive Examples](https://github.com/ghiscoding/angular-validation/wiki/Working-Directive-Examples)\n    * [Service Examples](https://github.com/ghiscoding/angular-validation/wiki/Working-Service-Examples)\n    * [Bootstrap Decorator (has-error)](https://github.com/ghiscoding/angular-validation/wiki/Bootstrap-Decorator-(has-error))\n* Functionalities\n    * [Alternate Text on Validators](https://github.com/ghiscoding/angular-validation/wiki/Alternate-Text-on-Validators)\n    * [DisplayErrorTo](https://github.com/ghiscoding/angular-validation/wiki/Bootstrap-Input-Groups-Wrapping)\n    * [Isolated Scope](https://github.com/ghiscoding/angular-validation/wiki/Isolated-Scope)\n    * [PreValidate Form (on load)](https://github.com/ghiscoding/angular-validation/wiki/PreValidate-Form-(on-page-load))\n    * [Reset Form](https://github.com/ghiscoding/angular-validation/wiki/Reset-Form)\n    * [Revalite an input triggered by another Input](https://github.com/ghiscoding/angular-validation/wiki/Revalidate-Input)\n    * [Submit and Validation](https://github.com/ghiscoding/angular-validation/wiki/Form-Submit-and-Validation)\n    * [Validation Callback](https://github.com/ghiscoding/angular-validation/wiki/Validation-Callback)\n    * [Validator Remove](https://github.com/ghiscoding/angular-validation/wiki/Remove-Validator-from-Element)\n    * [Validation Summary](https://github.com/ghiscoding/angular-validation/wiki/Validation-Summary)\n* Custom Validations\n    * [Custom Validation (JS)](https://github.com/ghiscoding/angular-validation/wiki/Custom-Validation-functions)\n    * [Remote Validation (AJAX)](https://github.com/ghiscoding/angular-validation/wiki/Remote-Validation-(AJAX))\n* Properties \u0026 Options\n    * [Attributes (all options)](https://github.com/ghiscoding/angular-validation/wiki/Inputs-(local-options))\n    * [Global Options](https://github.com/ghiscoding/angular-validation/wiki/Global-Options)\n    * [ControllerAs Syntax](https://github.com/ghiscoding/angular-validation/wiki/ControllerAs-Syntax)\n* Validators\n    * [Available Validator Rules](https://github.com/ghiscoding/angular-validation/wiki/Available-Validators-(rules))\n    * [Custom Regular Expression Pattern](https://github.com/ghiscoding/angular-validation/wiki/Regular-Expression-Pattern)\n* Misc\n    * [Changelog](https://github.com/ghiscoding/angular-validation/wiki/CHANGELOG)\n    * [License](https://github.com/ghiscoding/angular-validation/wiki/License)\n\n\u003ca name=\"install\"\u003e\u003c/a\u003e\nDownload and Install it\n-----\nInstall with **Bower**\n\n```javascript\n// bower install with\nbower install angular-validation-ghiscoding\n```\nInstall with **NPM**\n\n```javascript\n// NPM install with\nnpm install angular-validation-ghiscoding\n```\nInstall with **NuGet** (see the [NuGet Package Here](http://www.nuget.org/packages/Angular-Validation-Ghiscoding))\n```javascript\nPM\u003e Install-Package Angular-Validation-Ghiscoding\n```\nWhen used with IIS, you will need to map the JSON type\n```html\n\u003cstaticContent\u003e\n    \u003cmimeMap fileExtension=\".json\" mimeType=\"application/json\" /\u003e\n\u003c/staticContent\u003e\n```\n\n### License\n[MIT License](http://www.opensource.org/licenses/mit-license.php)\n\n### Available Validator Rules\nAll validators are written as `snake_case` but it's up to the user's taste and could also be used as `camelCase`. So for example `alpha_dash_spaces` and `alphaDashSpaces` are both equivalent.\n\n##### NOTE: on an `input type=\"number\"`, the `+` sign is an invalid character (browser restriction) even if you are using a `signed` validator. If you really wish to use the `+`, then change your input to a `type=\"text\"`.\n\n* `accepted` The field under validation must be `yes`, `on`, `1`, or `true`. Useful for validating \"Terms of Service\" acceptance.\n* `alpha` Only alpha characters (including latin) are present (a-z, A-Z)\n* `alpha_spaces` Only alpha characters (including latin) and spaces are present (a-z, A-Z)\n* `alpha_num` Only alpha-numeric characters (including latin) are present (a-z, A-Z, 0-9)\n* `alpha_num_spaces` Only alpha-numeric characters (with latin \u0026 spaces) are present (a-z, A-Z, 0-9)\n* `alpha_dash` Only alpha-numeric characters + dashes, underscores are present (a-z, A-Z, 0-9, _-)\n* `alpha_dash_spaces` Alpha-numeric chars + dashes, underscores and spaces (a-z, A-Z, 0-9, _-)\n* `between:min,max` Will auto-detect value type then use proper validator.\n  * Type Number uses `between_num`, String use `between_len`.\n* `between_date_iso:d1,d2` Alias of `between_date_iso`.\n* `between_date_euro:d1,d2` Alias of `date_euro_between`.\n* `between_date_euro_long:d1,d2` Alias of `date_euro_long_between`.\n* `between_date_euro_short:d1,d2` *DEPRECATED* does not support leap year, preferable to use `date_euro_between` or make a PR to fix it..\n* `between_date_us:d1,d2` Alias of `date_us_between`.\n* `between_date_us_long:d1,d2` Alias of `date_us_long_between`.\n* `between_date_us_short:d1,d2` *DEPRECATED* does not support leap year, preferable to use `date_us` or make a PR to fix it..\n* `between_len:min,max` Ensures the length of a string is between a min,max length.\n* `between_num:min,max` Ensures the numeric value (int or float) is between a min,max number.\n* `boolean` Ensures the value is `true` or `false` (`0` or `1` is also valid).\n* `compare` Alias of `match`\n* `credit_card` Valid credit card number (AMEX, VISA, Mastercard, Diner's Club, Discover, JCB)\n* `date_iso` Ensure date follows the ISO format (yyyy-mm-dd)\n* `date_iso_between:d1,d2` Ensure date follows the ISO format and is between (d1) \u0026amp; (d2)\n* `date_iso_max:d` Date must follow ISO format and is lower or equal than date (d)\n* `date_iso_min:d` Date must follow ISO format and is higher or equal than date (d)\n* `date_euro` Date must follow the European short or long format (dd-mm-yyyy) or (dd/mm/yyyy)\n* `date_euro_long` Date must follow the European long format (dd-mm-yyyy) or (dd/mm/yyyy)\n* `date_euro_between:d1,d2` Date must follow European short or long format and is between (d1) \u0026amp; (d2)\n* `date_euro_long_between:d1,d2` Date must follow European long format and is between (d1) \u0026amp; (d2)\n* `date_euro_max:d` Date must follow European short or long format and is lower or equal than date (d)\n* `date_euro_long_max:d` Date must follow European long format and is lower or equal than date (d)\n* `date_euro_min:d` Date must follow European short or long format and is higher or equal than date (d)\n* `date_euro_long_min:d` Date must follow European long format and is higher or equal than date (d)\n* `date_euro_short` *DEPRECATED* does not support leap year, preferable to use `date_euro` or make a PR to fix it..\n* `date_euro_short_between:d1,d2` *DEPRECATED* does not support leap year, preferable to use `date_euro_between` or make a PR to fix it..\n* `date_euro_short_max:d` *DEPRECATED* does not support leap year, preferable to use `date_euro_max` or make a PR to fix it..\n* `date_euro_short_min:d` *DEPRECATED* does not support leap year, preferable to use `date_euro_min` or make a PR to fix it..\n* `date_us` Date must follow the US short or long format (mm-dd-yyyy) or (mm/dd/yyyy)\n* `date_us_long` Date must follow the US long format (mm-dd-yyyy) or (mm/dd/yyyy)\n* `date_us_between:d1,d2` Date must follow the US short or long format and is between (d1) \u0026amp; (d2)\n* `date_us_long_between:d1,d2` Date must follow the US long format and is between (d1) \u0026amp; (d2)\n* `date_us_max:d` Date must follow US short or long format and is lower or equal than date (d)\n* `date_us_long_max:d` Date must follow US long format and is lower or equal than date (d)\n* `date_us_min:d` Date must follow US short or long format and is higher or equal than date (d)\n* `date_us_long_min:d` Date must follow US long format and is higher or equal than date (d)\n* `date_us_short` *DEPRECATED* does not support leap year, preferable to use `date_us` or make a PR to fix it.\n* `date_us_short_between:d1,d2` *DEPRECATED* does not support leap year, preferable to use `date_us_between` or make a PR to fix it.\n* `date_us_short_max:d` *DEPRECATED* does not support leap year, preferable to use `date_us_max` or make a PR to fix it.\n* `date_us_short_min:d` *DEPRECATED* does not support leap year, preferable to use `date_us_min` or make a PR to fix it.\n* `different` Alias of `different_input`\n* `different_input:f` Must be different from another input field(f), where (f) must be the exact ngModel attribute of input field to compare to. The error message will use the input name or the `friendly-name` if it was provided on first input, ex.: `\u003cinput friendly-name=\"First Name\".../\u003e` will display :: *Field must be different from specified field \"First Name\"*.\n* `different_input:f,t` Must be different from another input field(f), same as (different:f) but also include (t) for alternate input name to be displayed in the error message (it still uses a generic error message, if you really wish to replace the full error message then you should use `match:n:alt` see [:alt](https://github.com/ghiscoding/angular-validation/wiki/Alternate-Text-on-Validators))\n* `digits:n` Ensures that field only has integer numbers and length precisely matches the specified length (n).\n* `digits_between:min,max` Ensures that field only has integer numbers and is between a min,max length.\n* `email` Checks for a valid email address\n* `email_address` Alias of `email`\n* `enum` Alias of `in_list`\n* `exact_len:n` Ensures that field length precisely matches the specified length (n).\n* `float` as to be floating value (excluding integer)\n* `float_signed` Has to be floating value (excluding int), could be signed (-/+) positive/negative.\n* ~~`iban`~~ To properly validate an IBAN please use [Wiki - Custom Validation](https://github.com/ghiscoding/angular-validation/wiki/Custom-Validation-functions) with an external library like [Github arhs/iban.js](https://github.com/arhs/iban.js)\n\n* `in` Alias of `in_list`\n* `in_list:foo,bar,..` Ensures the value is included inside the given list of values. The list must be separated by ',' and also accept words with spaces for example \"ice cream\".\n* `int` Only positive integer (alias to `integer`).\n* `integer` Only positive integer.\n* `int_signed` Only integer, could be signed (-/+) positive/negative (alias to `integer_signed`).\n* `integer_signed` Only integer, could be signed (-/+) positive/negative.\n* `ip` Alias of `ipv4`\n* `ipv4` Check for valid IP (IPv4)\n* `ipv6` Check for valid IP (IPv6)\n* `match:f` Match another input field(f), where (f) must be the exact ngModel attribute of input field to compare to. The error message will use the `friendly-name` if it was provided on first input, ex.: `\u003cinput friendly-name=\"Password\".../\u003e` will display :: *Confirmation field does not match specified field \"Password\"*.\n* `match:f,t` Match another input field(f), same as (match:f) but also include (t) for alternate input name to be displayed in the error message (it still uses a generic error message, if you really wish to replace the full error message then you should use `match:n:alt` see [:alt](https://github.com/ghiscoding/angular-validation/wiki/Alternate-Text-on-Validators))\n* `match_input` Alias of `match`.\n* `max:n` Will auto-detect value type then use proper validator.\n  * Type Number uses `max_num`, String use `max_len`.\n* `max_date_iso` Alias of `date_iso_max`.\n* `max_date_euro` Alias of `date_euro_max`.\n* `max_date_euro_long` Alias of `date_euro_long_max`.\n* `max_date_euro_short` *DEPRECATED* does not support leap year, preferable to use `max_date_euro` or make a PR to fix it.\n* `max_date_us` Alias of `date_us_max`.\n* `max_date_us_long` Alias of `date_us_long_max`.\n* `max_date_us_short` *DEPRECATED* does not support leap year, preferable to use `max_date_us` or make a PR to fix it.\n* `max_len:n` Checks field length, no longer than specified length where (n) is length parameter.\n* `max_length:n` Alias of `max_len`\n* `max_num:n` Checks numeric value to be lower or equal than the number (n).\n* `min:n` Will auto-detect value type then use proper validator.\n  * Type Number uses `min_num`, String use `min_len`.\n* `min_date_iso` Alias of `date_iso_min`.\n* `min_date_euro` Alias of `date_euro_min`.\n* `min_date_euro_long` Alias of `date_euro_long_min`.\n* `min_date_euro_short` *DEPRECATED* does not support leap year, preferable to use `min_date_euro` or make a PR to fix it.\n* `min_date_us` Alias of `date_us_min`.\n* `min_date_us_long` Alias of `date_us_long_min`.\n* `min_date_us_short` *DEPRECATED* does not support leap year, preferable to use `min_date-us` or make a PR to fix it.\n* `min_len:n` Checks field length, no shorter than specified length where (n) is length parameter.\n* `min_length:n` Alias of `min_len`\n* `min_num:n` Checks numeric value to be higher or equal than the number (n).\n* `not_in` Alias of `not_in_list`\n* `not_in_list:foo,bar,..` Ensures the value is included inside the given list of values. The list must be separated by ',' and also accept words with spaces for example \"ice cream\".\n* `numeric` Only positive numeric value (float, integer).\n* `numeric_signed` Only numeric value (float, integer) can also be signed (-/+).\n* `pattern` Ensure it follows a regular expression pattern... Refer to [Wiki - Regular Expression Pattern](https://github.com/ghiscoding/angular-validation/wiki/Regular-Expression-Pattern) on how to use it.\n* `phone` Check for a valid phone number (Canada/US)\n* `phone_international` Check for a valid international phone number\n* `range` Alias of `between`\n* `required` Ensures the specified key value exists and is not empty\n* `same` Alias of `match`.\n* `size` Will auto-detect value type then use proper validator.\n  * Type Number uses `exact_num`, String use `exact_len`.\n* `string_len` Alias of `between_len`\n* `string_length` Alias of `between_len`\n* `time` Ensure time follows the format of (hh:mm) or (hh:mm:ss)\n* `url` Check for valid URL or subdomain","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fghiscoding%2Fangular-validation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fghiscoding%2Fangular-validation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fghiscoding%2Fangular-validation/lists"}