Hyvä Theme is Now Open Source: What This Means for Magento Community - Mageplaza
Hyvä is now Open Source and free. Discover what changed, what remains commercial, how it impacts the Magento ecosystem, and how to maximize its full potential.
Vinh Jacker | 03-17-2025
During the development process of your e-commerce store, you will receive a wide range of data from your customers. Determining the validity of this data is an essential task for you. With the support of the default Magento 2 tools , you can quickly create a custom attribute validation rule to check for correct input.
Let’s explore how to customize the validation rule through the below process:
Here is how validation looks on the registration page.

To help the fields inside the form pass validation, you need to add the following attribute
<form /> tag:
<form data-mage-init='{"validation":{}}' … >
You can use different ways to do this:
<form data-mage-init='{
"validation":{
"rules": {
"login": {
"required":true
}
}
}
}' … >
<input type="text" data-validate='{"required":true}' name="login" id="login" ... />
<input type="text" required="true" name="login" id="login" ... />
<input type="text" class="input-text required" name="login" id="login" ... /><a id="step_2" style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 16px;"></a>
In this step, you need to use the addMethod to add a new rule. There are two parameters:
According to your goals, you can connect the validator in different ways.
<link src="Vendor_Module::js/validation.js"/>
After creating the validator, add it to the required element.
After registering the JS file, you need to create the requirejs-config.js file.
For example:
app/code/<Vendor>/<Module>/view/frontend/requirejs-config.js.
var config = {
map: {
"*": {
myValidation: "<Vendor_Module>/js/validation"
}
}
};
Connect the validator in the phtml file:
<script type="text/x-magento-init">
{
"*": {
"myValidation": {}
}
}
</script>
You can add the created validator to the required element.
In case you want to perform some other actions besides the validation check, you can determine the form validation in the Js file:
$('#btn').on('click', function() {
var form = '#form';
if ($(form).validation() && $(form).validation('isValid')) {
//true
} else {
//false
}
});
Note: There are a large number of out-of-the-box validators in Magento, so before creating your validator, you need to check whether it has been created before you or not.
The below table shows a list of validation rules for the latest Magento version. There are two columns in this table. The first column shows attribute names, and the second column contains the text of the error.
Please access the lib/web/jquery/jquery.validate.js file to view a list of rules, as below:
| Attribute Name | Text Of The Error |
|---|---|
| required | This is a required field. |
| remote | Please fix this field. |
| Please enter a valid email address. | |
| url | Please enter a valid URL. |
| date | Please enter a valid date. |
| dateISO | Please enter a valid date (ISO). |
| number | Please enter a valid number. |
| digits | Please enter only digits. |
| creditcard | Please enter a valid credit card number. |
| equalTo | Please enter the same value again. |
| maxlength | Please enter no more than {0} characters. |
| minlength | Please enter at least {0} characters. |
| rangelength | Please enter a value between {0} and {1} characters long. |
| range | Please enter a value between {0} and {1}. |
| max | Please enter a value less than or equal to {0}. |
| min | Please enter a value greater than or equal to {0}. |
Please access the lib/web/mage/validation.js file to view a list of rules, as below:
| Attribute Name | Text Of The Error |
|---|---|
| max-words | Please enter {0} words or less |
| min-words | Please enter at least {0} words |
| range-words | Please enter between {0} and {1} words |
| letters-with-basic-punc | Letters or punctuation only please |
| alphanumeric | Letters, numbers, spaces or underscores only please |
| letters-only | Letters only please |
| no-whitespace | No white space please |
| zip-range | Your ZIP-code must be in the range 902xx-xxxx to 905-xx-xxxx |
| integer | A positive or negative non-decimal number please |
| vinUS | The specified vehicle identification number (VIN) is invalid |
| dateITA | Please enter a correct date |
| dateNL | Vul hier een geldige datum in |
| time | Please enter a valid time, between 00:00 and 23:59 |
| time12h | Please enter a valid time, between 00:00 am and 12:00 pm |
| phoneUS | Please specify a valid phone number |
| phoneUK | Please specify a valid phone number |
| mobileUK | Please specify a valid mobile number |
| stripped-min-length | Please enter at least {0} characters |
| validate-no-utf8mb4-characters | Please remove invalid characters: {0} |
| credit-card-types | Please enter a valid credit card number |
| ipv4 | Please enter a valid IP v4 address |
| ipv6 | Please enter a valid IP v6 address |
| pattern | Invalid format |
| allow-container-className | bool |
| validate-no-html-tags | HTML tags are not allowed |
| validate-select | Please select an option |
| validate-no-empty | Empty Value |
| validate-alphanum-with-spaces | Please use only letters (a-z or A-Z), numbers (0-9) or spaces only in this field |
| validate-data | Please use only letters (a-z or A-Z), numbers (0-9) or underscore (_) in this field, and the first character should be a letter |
| validate-street | Please use only letters (a-z or A-Z), numbers (0-9), spaces and “#” in this field |
| validate-phoneStrict | Please enter a valid phone number. For example (123) 456-7890 or 123-456-7890 |
| validate-phoneLax | Please enter a valid phone number. For example (123) 456-7890 or 123-456-7890 |
| validate-fax | Please enter a valid fax number (Ex: 123-456-7890) |
| validate-email | Please enter a valid email address (Ex: [email protected]) |
| validate-emailSender | Please enter a valid email address (Ex: [email protected]) |
| validate-password | Please enter 6 or more characters. Leading and trailing spaces will be ignored |
| validate-admin-password | Please enter 7 or more characters, using both numeric and alphabetic |
| validate-customer-password | Minimum length of this field must be equal or greater than %1 symbols. Leading and trailing spaces will be ignored. |
| Minimum of different classes of characters in password is %1. Classes of characters: Lower Case, Upper Case, Digits, Special Characters | |
| validate-url | Please enter a valid URL. Protocol is required (http://, https:// or ftp://) |
| validate-clean-url | Please enter a valid URL. For example http://www.example.com or www.example.com |
| validate-xml-identifier | Please enter a valid XML-identifier (Ex: something_1, block5, id-4) |
| validate-ssn | Please enter a valid social security number (Ex: 123-45-6789) |
| validate-zip-us | Please enter a valid zip code (Ex: 90602 or 90602-1234) |
| validate-date-au | Please use this date format: dd/mm/yyyy. For example 17/03/2006 for the 17th of March, 2006 |
| validate-currency-dollar | Please enter a valid $ amount. For example $100.00 |
| validate-not-negative-number | Please enter a number 0 or greater in this field |
| validate-zero-or-greater | Please enter a number 0 or greater in this field |
| validate-greater-than-zero | Please enter a number greater than 0 in this field |
| validate-css-length | Please input a valid CSS-length (Ex: 100px, 77pt, 20em, .5ex or 50%) |
| validate-number | Please enter a valid number in this field |
| required-number | Please enter a valid number in this field |
| validate-number-range | The value is not within the specified range |
| validate-digits | Please enter a valid number in this field |
| validate-digits-range | The value is not within the specified range |
| validate-range | The value is not within the specified range |
| validate-alpha | Please use letters only (a-z or A-Z) in this field |
| validate-code | Please use only letters (a-z), numbers (0-9) or underscore (_) in this field, and the first character should be a letter |
| validate-alphanum | Please use only letters (a-z or A-Z) or numbers (0-9) in this field. No spaces or other characters are allowed |
| validate-date | Please enter a valid date |
| validate-date-range | Make sure the To Date is later than or the same as the From Date |
| validate-cpassword | Please make sure your passwords match |
| validate-identifier | Please enter a valid URL Key (Ex: “example-page”, “example-page.html” or “anotherlevel/example-page”) |
| validate-zip-international | Please enter a valid zip code |
| validate-one-required | Please select one of the options above |
| validate-state | Please select State/Province |
| required-file | Please select a file |
| validate-ajax-error | bool |
| validate-optional-datetime | The field isn’t complete |
| validate-required-datetime | This is a required field |
| validate-one-required-by-name | Please select one of the options |
| less-than-equals-to | Please enter a value less than or equal to %s |
| greater-than-equals-to | Please enter a value greater than or equal to %s |
| validate-emails | Please enter valid email addresses, separated by commas. For example, [email protected], [email protected] |
| validate-cc-type-select | Card type does not match credit card number |
| validate-cc-number | Please enter a valid credit card number |
| validate-cc-type | Credit card number does not match credit card type |
| validate-cc-exp | Incorrect credit card expiration date |
| validate-cc-cvn | Please enter a valid credit card verification number |
| validate-cc-ukss | Please enter issue number or start date for switch/solo card type |
| validate-length | Please enter less or equal than %1 symbols..replace(‘%1’, length); |
| Please enter more or equal than %1 symbols..replace(‘%1’, length) | |
| required-entry | This is a required field |
| not-negative-amount | Please enter positive number in this field |
| validate-per-page-value-list | Please enter a valid value, ex: 10,20,30 |
| validate-per-page-value | Please enter a valid value from list |
| validate-new-password | Please enter 6 or more characters. Leading and trailing spaces will be ignored |
| required-if-not-specified | This is a required field |
| required-if-all-sku-empty-and-file-not-loaded | Please enter valid SKU key |
| required-if-specified | This is a required field |
| required-number-if-specified | Please enter a valid number |
| datetime-validation | This is required field |
| required-text-swatch-entry | Admin is a required field in each row |
| required-visual-swatch-entry | Admin is a required field in each row |
| required-dropdown-attribute-entry | Admin is a required field in each row |
| validate-item-quantity | Please enter a quantity greater than 0; |
| The fewest you may purchase is %1; | |
| The maximum you may purchase is %1; | |
| You can buy this product only in quantities of %1 at a time | |
| password-not-equal-to-user-name | password-not-equal-to-user-nam |
That’s all! I’ve provided you he detailed instructions for adding custom validation rule in Magento 2. Hopefully, this article is useful to you. If you have any questions or want to add something, please let me know by commenting below.