validates_format_of¶
The validates_format_of validation in ActiveRecord allows you to validate whether an attribute's value matches a specified format using a regular expression. It is commonly used to ensure that attributes such as email addresses, URLs, or phone numbers adhere to a particular pattern. To use validates_format_of, you need to specify the following options:
-
Attribute Name: This option specifies the name of the attribute you want to validate for format. It is typically set as a symbol or string.
static $validates_format_of = ['email' => []]; -
With (Required): The
withoption defines the regular expression pattern that the attribute's value must match. It is required and should be set as a regular expression pattern enclosed in forward slashes.static $validates_format_of = [ 'email' => [ 'with' => '/\A[^@\s]+@([^@\s]+\.)+[^@\s]+\z/' ] ]; -
Message (Optional): To customize the error message displayed when the validation fails, you can use the
messageoption to provide a custom error message.static $validates_format_of = [ 'phone_number' => [ 'with' => '/\d{3}-\d{3}-\d{4}/', 'message' => 'Please enter a valid phone number in the format XXX-XXX-XXXX', ], ]; -
Allow Blank (Optional): The
allow_blankoption allows you to specify whether the attribute is allowed to be empty (e.g., an empty string). By default,allow_blankis set tofalse, meaning that the attribute must not be blank. You can set it totrueto allow blank values.static $validates_format_of = [ 'website' => [ 'with' => '/^https?:\/\//', 'allow_blank' => true ] ]; -
Allow Null (Optional): The
allow_nulloption allows you to specify whether the attribute is allowed to be null. By default,allow_nilis set tofalse, meaning that the attribute must not be null. You can set it totrueto allow null values.static $validates_format_of = [ 'ssn' => [ 'with' => '/^\d{3}-\d{2}-\d{4}/', 'allow_null' => true ] ]; -
On (Optional): The
onoption allows you to specify when the validation should occur. By default, it is set to'save', which means the validation is performed when the record is saved. You can set it to'create'to validate only during the creation of a new record or'update'to validate only during updates.static $validates_format_of = [ 'credit_card' => [ 'with' => '/^\d{16}/', 'on' => 'create' ] ];
Example of Usage:
class User extends ActiveRecord\Model {
static $validates_format_of = [
'email' => [
'with' => '/\A[^@\s]+@([^@\s]+\.)+[^@\s]+\z/',
'message' => 'Please enter a valid email address.',
],
];
}