There are Multiple Ways to Create a Validator But here we use Regular Expression or JavaScript Regular Expression or RegExp for Creation Validators. In this article, we will see the most Frequently Used Expression
Step 1 : Create a New Class for Validator like below or Validator
See First Example 10 Digit Mobile Number Validation
<?php
namespace common\validators;
use yii\validators\Validator;
class MobileValidator extends Validator {
public function validateAttribute($model, $attribute) {
if (isset($model->$attribute) and $model->$attribute != '') {
if (!preg_match('/^[123456789]\d{9}$/', $model->$attribute)) {
$this->addError($model, $attribute, 'In Valid Mobile / Phone number');
}
}
}
}
Here We can Writee Diffrent Diffrent Regular Expression as Per Requirement
`
php
preg_match('/^[123456789]\d{9}$/', $model->$attribute)
`
Step 2: How tO Use Validator
I Hope Everyone Know How to use a validator but here is a example how to use it.
Add a New Rule in your Model Class Like this
`
php
[['mobile'],\common\validators\MobileValidator::class],
[['mobile'], 'string', 'max' => 10],
So It's Very Simple to use a Custom Validator.
As I Told you Earlier that i show you some more Example for Using Regular Expression Validator Just Replace these string in preg_match.
1. Aadhar Number Validator
```php
preg_match('/^[2-9]{1}[0-9]{3}[0-9]{4}[0-9]{4}$/', $model->$attribute)
Bank Account Number Validator
`
php preg_match("/^[0-9]{9,18}+$/", $model->$attribute)`
Bank IFSC Code Validator
`
php preg_match("/^[A-Z]{4}0[A-Z0-9]{6}$/", $model->$attribute)`
Pan Card Number Validator
`
php preg_match('/^([a-zA-Z]){5}([0-9]){4}([a-zA-Z]){1}?$/', $model->$attribute)`
Pin Code Validator
`
php preg_match('/^[0-9]{6}+$/', $model->$attribute)`
GSTIN Validator
`
php preg_match("/^([0][1-9]|[1-2][0-9]|[3][0-5])([a-zA-Z]{5}[0-9]{4}[a-zA-Z]{1}[1-9a-zA-Z]{1}[zZ]{1}[0-9a-zA-Z]{1})+$/", $model->$attribute)`
This is Other Type of Custom Validator
- 500 Word Validator for a String
<?php
namespace common\validators;
use yii\validators\Validator;
/**
* Class Word500Validator
* @author Aayush Saini <aayushsaini9999@gmail.com>
*/
class Word500Validator extends Validator
{
public function validateAttribute($model, $attribute)
{
if ($model->$attribute != '') {
if (str_word_count($model->$attribute) > 500) {
$this->addError($model, $attribute, $model->getAttributeLabel($attribute) . ' length can not exceeded 500 words.');
\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
return $model->errors;
}
}
}
}
Now I assume that after reading this article you can create any type of validator as per your Requirement.
:) Thanks for Reading
If you have any questions, please ask in the forum instead.
Signup or Login in order to comment.