2016-05-31 286 views
0

我需要检查textarea文本中的任何电子邮件的存在。
如果存在任何电子邮件,表单应该失败。Laravel验证正则表达式 - 文本内的电子邮件

我做了正则表达式失败,如果没有电子邮件存在regex:/[a-zA-Z0-9._%+-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}/它应该很容易做否定,但我没有任何成功。

+0

你知道有刚有规则|电子邮件,以检查它是否一个真实的电子邮件地址? 电子邮件:验证字段必须格式化为电子邮件地址。 – Duikboot

+0

我知道电子邮件规则。但是该规则是检查输入字段是否形成良好的电子邮件。我在寻找的是textarea的验证规则,该规则检查文本中是否有电子邮件。 – 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():无结尾分隔符'/'found'异常。我已经尝试将规则放入数组中,但仍然不行。 :/ – ruinobreferreira

1

我认为解决这个问题的最好方法是创建自己的custom validation rule。这样你就可以使用格式良好的代码来解决这个问题。

-1

Laravel带有一个非常容易实现的“email”验证规则。您可以阅读this link中的所有信息和其他验证方法。

+0

我知道这个规则。不是我在找什么。 – ruinobreferreira

+0

啊我看到了,在这种情况下,自定义验证是您的最佳选择! – Luke

相关问题