PHP の正規表現を学んでいるのですが、理解に苦しむものに出会いました。
この本は、電子メールアドレスの検証でこの例を示しています。
if (ereg("^[^@]+@([a-z0-9\-]+\.)+[a-z]{2,4}$", $email))
この式のいくつかの要素については明確ではありません。
- これは何を意味するのでしょうか
[^@]+@
- の括弧の目的は何
([a-z0-9\-]+\.)
ですか?
[^@]+@
意味:
[ - Match this group of characters
^@ - Anything that is NOT an at sign
]
+ - One or more times
@ - Match an at sign
したがって、基本的に最初のアットマークの前のすべての文字に一致します。
の括弧の目的は、キャプチャ グループ([a-z0-9-]+.)
を作成することです。これは、グループがある程度のテキストをキャプチャした後で参照できるようにする必要があります。
また、ereg_*
関数は非推奨であり、本は少し古くなっている必要があることに注意してください。現在、preg_*
関数ファミリーを使用しています。それらの変換に関するチュートリアルは、この SO questionにあります。