@記号の後にメールアドレスの最後の部分を返す正規表現を誰かが手伝ってくれますか?私は正規表現を初めて使用しますが、非効率的な.Net文字列関数を作成するのではなく、正規表現の使用方法を学びたいと思っています。
たとえば、「test@example.com」の入力の場合、「example.com」の出力が必要です。
乾杯!ティム
@記号の後にメールアドレスの最後の部分を返す正規表現を誰かが手伝ってくれますか?私は正規表現を初めて使用しますが、非効率的な.Net文字列関数を作成するのではなく、正規表現の使用方法を学びたいと思っています。
たとえば、「test@example.com」の入力の場合、「example.com」の出力が必要です。
乾杯!ティム
正規表現は、この目的のために非常に重い機械です。メールアドレスを含む文字列を文字で分割し、@
後半を取るだけです。(電子メール アドレスには、1@
文字のみが含まれることが保証されています。)
@(.*)$
これは @ と一致し、入力 ($) の最後まですべてをキャプチャします。
これは汎用の電子メール マッチャーです。
[a-zA-Z][\w\.-]*[a-zA-Z0-9]@([a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z])
ドメイン グループのみをキャプチャすることに注意してください。@
以下を使用すると、次の部分もキャプチャできます。
([a-zA-Z][\w\.-]*[a-zA-Z0-9])@([a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z])
これが RFC 2822 に準拠しているかどうかはわかりませんが、疑わしいと思います。
入力の単純な正規表現は次のとおりです。
^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$
ただし、広範囲で異種のドメインを申請する場合は役に立たない場合があります。
例は次のとおりです。
^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.(?:[A-Z]{2}|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum)$
ただし、必要に応じてそのサフィックス ドメインを最適化できます。
しかし、サフィックスが必要な場合は、次のものが必要です。
@.+$
次の正規表現を試してください。
(?<=([\w-\.]@))((?:[\w]+\.)+)([a-zA-Z]{2,4})
$input=hardiksondagar@gmail.com;
// now you want to fetch gmail from input user PHP's inbuilt function
preg_match('/@(.*)/', $input, $output);
echo $output[1]; // it'll print "gmail.com"
(@)(\w+\-|\w+)+(\.)
私は専門家ではありませんが、少なくとも私が知る限り、上記の式は電子メールからドメインを取得するために必要なものです。
問題は、ドメインだけでなく「@」と「.」を取得することです。正規表現でドメイン名にアクセスするには、「$2」を使用し、「@」と「.」を保持するには、次のような式を使用できます。
$1newdomain$3
上記のサイトは、正規表現を試して、それがどのように機能するかを確認するのに適した場所です。