0

次のコードで、電子メール アドレスを .edu のみに制限するにはどうすればよいですか?

function ValidateEmail($email) {
    global $debug;
    if($debug)
        return TRUE;
    else
        return preg_match("/^[^\s]+@[^\s]+.[^\s]+$/", $email);
}
4

5 に答える 5

4

PHP 5.2 以降は、このコードでチェックします

function validateEmailAddress($email) {
  return filter_var($email, FILTER_VALIDATE_EMAIL) && preg_match('/@.+\.edu/', $email);
}
于 2013-03-06T06:27:49.310 に答える
0

これをチェックしてください

function ValidateEmail($email) { 

    if(filter_var($email, FILTER_VALIDATE_EMAIL)  && ( substr($email ,-4) == ".edu")){
        return true;
    }else{
        return false;
    }

}
于 2013-03-06T06:47:51.040 に答える
0

メールを検証するための正規表現は非常に原始的で不完全ですが、それで十分だと仮定すると、次のように [^\s]+ の代わりに ".edu" を末尾に明示的に追加するだけで済みます。

return preg_match("/^[^\s]+@[^\s]+\\.edu$/", $email);
于 2013-03-06T06:27:58.990 に答える
0

私は正規表現の初心者です。しかし、このブロックがある期間の後に見ることができます: [^\s]+. ニンジン (^) は not を表し、\s は空白 (タブ、改行、スペース) を表し、+ は、正規表現の次の部分 (たまたま最後) に到達するまで、これらの文字に無制限に一致することを示します。これは.、電子メールのドメイン内で、スクリプトが無限の非空白文字に一致することを意味します。これは、example@test.comとの両方example@test.comcomcomcomcomcomが機能するが機能example@test.c omしないことを意味します。[^\s]+これをに置き換えるとeduうまくいくはずです。

function ValidateEmail($email) {
    global $debug;
    if($debug)
        return TRUE;
    else
        return preg_match("/^[^\s]+@[^\s]+.edu$/", $email);
}

これが機能しない場合 (私は正規表現が非常に苦手なため)、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]+@[^\s]+.[^\s]+$/", $email);
    }
}
于 2013-03-06T06:29:24.437 に答える
0
    preg_match("/^[^\s]+@[^\s]+.[^\s]+$/", $email);

このパターンでは、.edu をパターンの最後に配置する必要があります。

    preg_match("/^[^\s]+@[^\s]+(.[^\s]+)*(\.edu)$/", $email);
于 2013-03-06T06:29:46.607 に答える