3

サブドメインを含むメールのみに一致する正規表現を知っている人はいますか?

例えば、

name@subdomain.domain.comまたname@subdomain.domain.edu.au

で使用することをお勧めします。

私はこれを試しました:

^[-+.0-9A-Z_a-z]+@[-+.0-9A-Z_a-z]+\.[A-Za-z]{2,4}$

しかし、それも一致しname@test.orgます。

4

6 に答える 6

7

とにかく、検証目的ではありません。苦痛で終わるだけです。

電子メール アドレスを検証するための唯一の適切な正規表現は、"@" 記号と少なくとも 1 つのピリオドを探すものです。他には何もありません。IDNの出現により、英数字でさえ意味がありません。

少なくとも、「サブドメイン」の意味を正確に定義する必要があります。すべてサブドメインです。何のサブドメイン?何が除外され、何が含まれますか?

「サブドメイン」と「トップレベル」をどのように定義しますか? 「一般に登録できるドメインのサブドメイン」のことですか?「一般登録可能なドメインのサブドメインのサブドメイン」? どのレベルの委任でサブドメインになりますか?

ドメインを登録できる「パブリック」が非常に限られており、サブドメインのサブドメインのサブドメインが標準である政府のドメインはどうですか? 何を合わせたいですか?

新しい gTLDとリストが時間とともに変化するという事実にどのように対処しますか? それともccTLDの追加/削除で?ccTLD がポリシーを変更し、特定のサブレジストリ (「myname.org.au」など) のみを販売する代わりに、直系の子孫ドメイン (「myname.au」など) を販売し始めた場合はどうなりますか? 正規表現を動的に更新しますか?もしそうなら、以前は有効で、もはや有効ではないアドレス、またはその逆をどのように処理しますか?

完全に有効な .id.au ドメインであるにも関わらず、メインのメール アドレス ringerc@ringerc.id.au を拒否する (既にネット上にある場合は変更しても意味がありません) というばかげたメール検証システムに出くわします。

別のものを作成しないでください。意図が検証ではない場合、それは素晴らしいことですが、正規表現を使用して電子メール アドレス ドメインを検証しようとしないでください。

于 2012-07-12T14:16:39.277 に答える
2

この単純な正規表現は、有効な電子メールアドレスを保証するものではありませんが、ナンセンスの多くを確実に排除します。式がを生成する場合FALSE、アドレスは実際には無効です。

SELECT 'name@subdomain.domain.edu.au' ~ E'^\\S+@subdomain\\.\\S{2,}+$' 
^  .. start of string
\S+ .. one or more non-space characters
@subdomain .. literally
\. .. a literal dot
\S{2,}+ two or more non-space characters
$ .. end of string

エスケープ文字列構文ではすべて\2倍になります。 また、他の回答とは異なり、PostgreSQLで機能します。v9.1.4でテスト済み。詳細はこちらのマニュアルをご覧ください。

@Craigが書いたように、信頼できる検証を試みるのは無駄です。しかし、それでも多くのナンセンスを排除することができます。

さらに一歩、複数を排除します@

E'^[^[:space:]@]+@subdomain\\.[^[:space:]@]{2,}+$' 
于 2012-07-12T22:59:17.523 に答える
2

これを使用してください:

(\w+@[\w.]+\w)

説明:

\w+      word characters (a-z, A-Z, 0-9, _) 
         (1 or more times (matching the most amount possible))

@                        '@'

[\w.]+   any character of: word characters (a-z, A-Z, 0-9, _), '.' 
         (1 or more times (matching the most amount possible))

\w       word characters (a-z, A-Z, 0-9, _)

PostgreSqlについては、このリンクこれを参照してください。(無理そうです)。

于 2012-07-12T11:58:16.640 に答える
1

私はあなたがウェブサイトで試して、あなた自身でそれをすることができると思います:

正規表現テスターhttp://regexpal.com/

あなたはオンラインで試すことができます...

よろしく、
ビクターズリタM。

于 2012-07-12T14:52:26.577 に答える
0

すべてのトップレベル ドメインとその構造のリストが必要です。Mozilla プロジェクトにはそのようなリストがあります。数百行あるので、これを正規表現に組み込むのは面倒かもしれませんが、もちろん不可能ではありません。https://wiki.mozilla.org/TLD_List更新: http://publicsuffix.org/に置き換えられました

基本的にはリンクパーサーです。(データベースから) テキストを調べ、電子メール アドレスまたは URL に一致するテキストを見つけて、それらをリンクに変換する必要があります。

于 2012-07-12T10:52:21.800 に答える