如何限制電子郵件地址僅限於.edu,在以下代碼中?限制電子郵件地址僅限於一個頂級域名(TLD)?
function ValidateEmail($email) {
global $debug;
if($debug)
return TRUE;
else
return preg_match("/^[^\s][email protected][^\s]+.[^\s]+$/", $email);
}
如何限制電子郵件地址僅限於.edu,在以下代碼中?限制電子郵件地址僅限於一個頂級域名(TLD)?
function ValidateEmail($email) {
global $debug;
if($debug)
return TRUE;
else
return preg_match("/^[^\s][email protected][^\s]+.[^\s]+$/", $email);
}
PHP 5.2或以上的檢查與此代碼
function validateEmailAddress($email) {
return filter_var($email, FILTER_VALIDATE_EMAIL) && preg_match('/@.+\.edu/', $email);
}
,因爲它是一個語法上有效的電子郵件,爲什麼不把最終測試看作是「&& preg_match('/ \。edu $ /',$ email)」呢? – 2013-03-06 06:30:25
我喜歡的方法,但不是正則表達式。 :應該使用P''/ \。edu $ /''代替 – 2013-03-06 06:31:43
好了,你的正則表達式驗證任何電子郵件是非常原始和不完整的,但假設這是對你不夠好,你只需要添加「 .edu「,而不是[^ \ s] +,像這樣:
return preg_match("/^[^\s][email protected][^\s]+\\.edu$/", $email);
我是reg表達式的新手。但是你可以看到有這個區塊後的時間段:[^\s]+
。胡蘿蔔(^)指的不是,\ s指的是空格(製表符,換行符,空格),並且+表示匹配這些字符的無限制,直到到達正則表達式的下一部分(恰好是結尾)。這意味着在電子郵件域中的.
之後,您的腳本將匹配無限非空白字符。這意味着[email protected]
和[email protected]
都可以工作,但[email protected] om
不會。替換這個[^\s]+
與edu
應該工作。
function ValidateEmail($email) {
global $debug;
if($debug)
return TRUE;
else
return preg_match("/^[^\s][email protected][^\s]+.edu$/", $email);
}
如果這不起作用(因爲我在regexp上很窮),我會合並PHP的substr()。
function ValidateEmail($email) {
global $debug;
if($debug)
return TRUE;
else {
if(substr($email,-4) != '.edu'))
return false;
else // ends in .edu, check for valid email
return preg_match("/^[^\s][email protected][^\s]+.[^\s]+$/", $email);
}
}
preg_match("/^[^\s][email protected][^\s]+.[^\s]+$/", $email);
在這個模式中,.edu的應放置在圖案的端部:
preg_match("/^[^\s][email protected][^\s]+(.[^\s]+)*(\.edu)$/", $email);
檢查了這一點
function ValidateEmail($email) {
if(filter_var($email, FILTER_VALIDATE_EMAIL) && (substr($email ,-4) == ".edu")){
return true;
}else{
return false;
}
}
@DannyBeckett:操作系統試圖與'preg_match(「/^[^ \ s] + @ [^ \ s] +。[^ \ s] + $ /」,$ email);'而且他只想在最後匹配電子郵件.edu!沒什麼不好的! – 2013-03-06 06:24:50