Laravel ИЛИ URL проверки или IP

У меня есть поле формы, и я хочу проверить, является ли введенное значение допустимым URL-адресом ИЛИ IP-адресом.

Я создал пользовательскую проверку запроса формы для проверки URL-адреса (доступной проверки URL-адреса от laravel было недостаточно), и это работает нормально.

Но как я могу изменить свою проверку, чтобы проверить, является ли это действительным URL-адресом или действительным IP-адресом? Это должно произойти только в том случае, если обе проверки не пройдены.

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class CheckDomain extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * 
     * Manipulate Input Domain before Validation
     *
     */
    protected function prepareForValidation()
    {
        // Remove HTTP - HTTPS
        $this->domain = str_replace([
                            'http://', 'https://'
                        ], '', $this->domain);

        $this->domain = strtok($this->domain, '/'); // Remove Slashes
        $this->domain = strtolower($this->domain); // Make Lowercase

        // Bring Together
        $this->merge([
            'domain' => $this->domain
        ]); 
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'domain' => [
                'required', 'regex:^(http://www\.|https://www\.|http://|https://)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(/.*)?$^'
            ]
        ];
    }
}
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
1 668
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать регулярное выражение это

^(http://www\.|https://www\.|http://|https://)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(/.*)?|^((http://www\.|https://www\.|http://|https://)?([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$

И ваш код, наконец, должен выглядеть так:

public function rules()
{
    return [
        'domain' => ['required', 'regex:^(http://www\.|https://www\.|http://|https://)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(/.*)?|^((http://www\.|https://www\.|http://|https://)?([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$']
    ];
}

Другие вопросы по теме

Возврат нескольких совпадений, но только до первого появления шаблона с использованием PHP и RegEX
Regex: Могу ли я назвать шаблон/группу для сокращения кода при повторном использовании шаблона/группы?
Как сопоставить текст в строке, которая не содержит определенного слова и не содержит слова с буквами и цифрами?
Как поймать ссылки с необязательными пробелами в PHP?
Заменить ячейку в фрейме данных после регулярного выражения в фрейме данных Pandas
Как удалить совпадающие кавычки, когда кавычки окружают слово, начинающееся с : или # (регулярное выражение)
Как разбить большой файл на части с определенным размером и состоянием
Регулярное выражение для соответствия всем словам внутри круглых скобок
Проблемы с кавычками, квази-кавычками и регулярными выражениями внутри функции в R
Регулярное выражение - положительный просмотр без группового сопоставления