Правило not_regex
Правило not_regex применяется к полям формы
и проверяет, что значение не соответствует заданному
регулярному выражению. Это правило является противоположностью
правила regex и позволяет запретить определённые
форматы данных. Правило принимает один параметр -
шаблон регулярного выражения, которому значение не должно
соответствовать.
Синтаксис
<?php
$rules = [
'field' => 'not_regex:/pattern/'
];
?>
Пример
Давайте проверим, что поле 'username' не содержит
специальных символов:
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
$request = new Request();
$request->merge(['username' => 'user@name']);
$rules = [
'username' => 'not_regex:/[@#\$%^&*()_+!]/'
];
$validator = Validator::make($request->all(), $rules);
if ($validator->fails()) {
echo "Validation failed: " . $validator->errors()->first();
} else {
echo "Validation passed";
}
?>
Результат выполнения кода:
"Validation failed: The username format is invalid."
Пример
Давайте запретим в поле 'phone' использование
формата с пробелами:
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
$request = new Request();
$request->merge(['phone' => '+7 999 123-45-67']);
$rules = [
'phone' => 'not_regex:/\s/'
];
$validator = Validator::make($request->all(), $rules);
if ($validator->fails()) {
echo "Validation failed";
} else {
echo "Validation passed";
}
?>
Результат выполнения кода:
"Validation failed"
Пример
Давайте проверим, что поле 'password' не содержит
последовательных символов:
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
$request = new Request();
$request->merge(['password' => 'abcd1234']);
$rules = [
'password' => 'not_regex:/(.)\1/'
];
$validator = Validator::make($request->all(), $rules);
if ($validator->fails()) {
echo "Validation failed";
} else {
echo "Validation passed";
}
?>
Результат выполнения кода:
"Validation passed"
Пример
Давайте проверим, что поле 'email' не принадлежит
определённому домену с использованием нескольких
правил:
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
$request = new Request();
$request->merge(['email' => 'test@temp-mail.org']);
$rules = [
'email' => [
'required',
'email',
'not_regex:/@temp-mail\.org$/'
]
];
$validator = Validator::make($request->all(), $rules);
if ($validator->fails()) {
echo "Validation failed: " . $validator->errors()->first();
} else {
echo "Validation passed";
}
?>
Результат выполнения кода:
"Validation failed: The email format is invalid."
Пример
Давайте используем правило not_regex в классе
FormRequest:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class ArticleRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'title' => [
'required',
'string',
'max:255',
'not_regex:/[<>{}]/'
],
'content' => [
'required',
'string',
'not_regex:/<script>/'
]
];
}
public function messages()
{
return [
'title.not_regex' => 'The title contains forbidden characters.',
'content.not_regex' => 'The content contains prohibited tags.'
];
}
}
?>
Смотрите также
-
правило
regex,
которое проверяет соответствие регулярному выражению -
правило
alpha,
которое проверяет алфавитные символы -
правило
alpha_dash,
которое проверяет буквы, цифры, дефис и подчёркивание -
правило
not_in,
которое проверяет отсутствие значения в списке