我使用php的preg_match
函數驗證電子郵件地址。不過,我不斷收到以下錯誤php preg_match與電子郵件驗證問題
preg_match(): No ending delimiter '^' found
這裏是我的preg_match
$pattern = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$";
模式又是如何解決這一問題?
我使用php的preg_match
函數驗證電子郵件地址。不過,我不斷收到以下錯誤php preg_match與電子郵件驗證問題
preg_match(): No ending delimiter '^' found
這裏是我的preg_match
$pattern = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$";
模式又是如何解決這一問題?
只需使用:
$pattern = "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/i";
這不完全有效,因爲你可以發送郵件到[email protected],你的模式會說這個地址是無效的。剛發生在我身上的是MS Exchange,它創建了這樣的電子郵件地址。 – mkudlacek
@mkudlacek您希望在應用模式之前將電子郵件小寫。 – Shoe
這不是對原始問題的回答。問題是如何使用preg_match()進行驗證。正確的模式是:/^[_ a-zA-Z0-9 - ] +(\。[_ a-zA-Z0-9 - ] +)* @ [a-zA-Z0-9 - ] +(\。 [a-zA-Z0-9 - ] +)*(\。[a-zA-Z] {2,})$ /或者用/ i擴展以用於不區分大小寫的匹配。 – mkudlacek
var emailid = $.trim($('#emailid').val());
if(! /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(emailid)){
alert("<?php echo "email_invalid" ?>");
return false;
}
這是jQuery代碼。我需要它在PHP中。 – 2619
使用PHP函數filter_var()如果郵政局長要允許電子郵件地址的RFC風格的比賽只會是更容易的ID。對於某些應用程序或MTA(sendmail等),這可能不合意。但是,如果要使用preg_match()路由,我會建議調查非貪婪量詞並捕獲不使用緩衝區的語句。一個好的開始將是http://us3.php.net/manual/en/book.pcre.php。
使用此代碼
<?php
$email = "asd/[email protected]";
$regex = '/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/';
$email = (preg_match($regex, $email))?$email:"invalid email";
?>
很好地使用變量和三元運算符 – DragonFire
因爲造成FILTER_VALIDATE_EMAIL的問題(比如,它不能很好地與不拉丁字符工作),我更喜歡使用:
preg_match("/^[^@][email protected][^@]+\.[a-z]{2,6}$/i",$email_address);
這是一個簡單的電子郵件驗證方法與正則表達式:
public function emailValidation($email)
{
$regex = "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,10})$/";
$email = strtolower($email);
return preg_match ($regex, $email);
}
相關:[使用正則表達式來驗證電子郵件地址](http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address?rq=1) – Dezza