私は助けが必要です、以下は電子メールをいくらか検証するための小さな非常に基本的な正規表現です、私はそれが最大に機能しないことを理解していますが、私のニーズには今のところ大丈夫です。
現在、PHPのeregi関数を使用していますが、php.netによると、これは減価償却された関数であり、preg_match代わりに、ereiをpreg_matchに置き換えるだけでは機能しません。誰かがそれを機能させる方法を教えてもらえますか?
function validate_email($email) {
if (!eregi("^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,4}$", $email)) {
echo 'bad email';
} else {
echo 'good email';
}
}
function validate_email($email) {
if (!preg_match("^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,4}$", $email)) {
echo 'bad email';
} else {
echo 'good email';
}
}
Perlスタイルの正規表現パターンは常に区切る必要があります。文字列の最初の文字は区切り文字と見なされるため、次のようになります。
function validate_email($email) {
if (!preg_match("/^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,4}$/i", $email)) {
echo 'bad email';
} else {
echo 'good email';
}
}
最初の試行が機能しなかった理由は、区切り文字として^
を使用しようとしたが、(明らかに)正規表現の終わりに一致する^
が見つからなかったためです。
あなたは3つのことを変える必要があるでしょう
i
フラグを使用します。それ以外の場合、残りはPCRE互換に見えます(はい、それは一種の冗長= Pです)
"/^[a-z0-9][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,4}$/i"