2016-05-31 284 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

相關問題