1

PHPのeregi関数を使っていたのですが、非推奨との通知が来ました。これが私のコードです:

!eregi("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$", trim($_POST['email']))

したがって、関数を preg_match に置き換えようとしていますが、次のコードでエラーが発生するため、preg_match の正しいパターンを取得できないようです。

!preg_match("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$", trim($_POST['email']))

上記のコードから得られるエラーは次のとおりです。

Warning: preg_match(): No ending delimiter '^' found in

助けてくれてありがとう。

4

5 に答える 5

3

通常、正規表現の最初と最後に区切り文字を使用する必要があります/

!preg_match("/^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$/", trim($_POST['email']))

手動入力: PCRE 導入/区切り記号

于 2013-10-01T11:20:28.037 に答える
2

正規表現を区切る必要があります。

preg_match("/^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$/",
            ^                                         ^
于 2013-10-01T11:20:20.910 に答える
2

preg_match()正規表現文字列の先頭または末尾に区切り記号を使用する必要があります。

preg_match("/^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$/", trim($_POST['email']))

区切り文字には、、、、、、、など~の複数の文字を使用できます。区切り文字を選択するときに、その文字が正規表現内で使用されている場合は、バックスラッシュ文字 ( ) でエスケープする必要があることに注意してください。たとえば、正規表現を使用して%#/@\

http://[0-9a-z]+\.com

区切り文字 の組み合わせでは、次の/すべての出現をエスケープする必要があります/

/http:\/\/[0-9a-z]+\.com/

詳細については、PHP のマニュアルを参照してください。

于 2013-10-01T11:29:03.377 に答える
1

のようにしてみてください。

!preg_match("/^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$/i", trim($_POST['email']))

/のような区切り文字を使用する必要があります

于 2013-10-01T11:21:28.713 に答える
1

ちなみに、メールアドレスの認証にはfilter_var関数も使えます。

$is_email_valid = filter_var($email, FILTER_VALIDATE_EMAIL);

詳細: http://php.net/manual/en/function.filter-var.php

于 2013-10-01T11:26:57.947 に答える