2016-05-31 7 views
0

Мне нужно проверить наличие любой электронной почты в тексте в текстовом поле.
Если есть какая-либо электронная почта, форма должна завершиться ошибкой.Laravel validate regex - Электронная почта внутри текста

Я сделал regex, чтобы потерпеть неудачу, если нет электронной почты regex:/[a-zA-Z0-9._%+-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}/, и это должно быть легко сделать отрицание, но я не имею никакого успеха.

+0

Вы в курсе есть только правила | электронной почты, чтобы проверить, если это реальный адрес электронной почты? E-mail: Поле под проверкой должно быть отформатировано как адрес электронной почты. – Duikboot

+0

Я знаю правило электронной почты. Но это правило - проверить, является ли поле ввода хорошо сформированным электронным письмом. То, что я ищу, - это правило проверки для текстового поля, в котором проверяется отсутствие электронной почты в этом тексте. – ruinobreferreira

ответ

1

Добавьте этот код в AppServiceProviderboot метод:

Validator::extend('not_regex', function($attribute, $value, $parameters, $validator) { 
    if (!is_string($value) && !is_numeric($value)) { 
     return false; 
    } 

    return !preg_match($parameters[0], $value); 
}); 

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

not_regex:"/[a-zA-Z0-9._%+-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}/"

+0

Это работает нормально, и оно проходит, если в тексте есть какие-либо электронные письма. Но то, что мне нужно и не в состоянии преуспеть, - это непротиворечивость: пройти, когда в тексте нет электронной почты. – ruinobreferreira

+0

А, ладно. По какой-то причине такого правила валидации в Laravel, как not_regex, нет, и я думаю, что это возможно только с помощью специального правила валидации. Вы уже пробовали? Я могу привести пример, если это необходимо. – Bushikot

+0

Отлично! Я тоже так руководил, так как не мог найти регулярное выражение для выполнения этой задачи. Но теперь я просто застрял в 'preg_match(): No end delimiter '/' found' Exception. Я уже пытался поставить правила в массив и все еще не в порядке. :/ – ruinobreferreira

1

Я думаю, что лучший способ решить это - создать свой собственный custom validation rule. Таким образом, вы можете решить эту проблему, используя красиво отформатированный код.

-1

Laravel поставляется с правилом проверки «электронной почты», которое очень легко реализовать. Вы можете прочитать все об этом и другие методы проверки в this link.

+0

Я знаю это правило. Не то, что я ищу. – ruinobreferreira

+0

А я вижу, в этом случае пользовательская проверка - ваш лучший вариант! – Luke