8

文字列から電子メール アドレスを抽出する正規表現が必要です (Java 正規表現を使用)。

それは本当にうまくいきます。

4

5 に答える 5

15

これが実際に機能する正規表現です。私は 1 時間かけて Web をサーフィンし、さまざまなアプローチをテストしましたが、Google がそれらのページをトップにランク付けしましたが、それらのほとんどは機能しませんでした。

有効な正規表現を共有したいと思います。

[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0- 9]+)*(\\.[A-Za-z]{2,})

元のリンクは次のとおりです: http://www.mkyong.com/regular-expressions/how-to-validate-email-address-with-regular-expression/

于 2010-02-12T09:42:49.203 に答える
4

それらを可能にするために、いくつかのダッシュを追加する必要がありました。ジャワ語での最終結果は次のとおりです。

final String MAIL_REGEX = "([_A-Za-z0-9-]+)(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9-]+)*(\\.[A-Za-z]{2,})";
于 2011-12-28T16:57:47.000 に答える
3

この正規表現テスター プラグインを Eclipse にインストールすると、正規表現
http://brosinski.com/regex/をテストする時間のクジラができます。

注意点:
プラグインでは、文字エスケープにバックスラッシュを 1 つだけ使用してください。ただし、正規表現を Java/C# 文字列に変換する場合は、最初に Java/C# 文字列メカニズムからバックスラッシュをエスケープし、次に実際の正規表現文字エスケープ メカニズムのために 2 つのエスケープを実行するため、それらを 2 倍にする必要があります。

テキストをキャプチャする正規表現のセクションを丸括弧/省略記号で囲みます。次に、Java または C# 正規表現のグループ関数を使用して、それらのセクションの値を見つけることができます。

([_A-Za-z0-9-]+)(\.[_A-Za-z0-9-]+) @([A-Za-z0-9]+)(\.[A-Za-z0 -9]+)

たとえば、上記の正規表現を使用すると、次の文字列

abc.efg@asdf.cde

収量

start=0, end=16
Group(0) = abc.efg@asdf.cde
Group(1) = abc
Group(2) = .efg
Group(3) = asdf
Group(4) = .cde

グループ 0 は常に一致した文字列全体のキャプチャです。

セクションを省略記号で囲まないと、一致を検出することはできますが、テキストをキャプチャすることはできません。

プログラムで 1 つずつテストしてから、どの正規表現を統合するかを決定できるため、1 つの長い包括的な正規表現を作成するよりも、いくつかの正規表現を作成する方が混乱が少ない可能性があります。特に、これまで考えたこともなかった新しいメール パターンを見つけた場合はなおさらです。

于 2010-02-12T19:17:36.153 に答える
1

少し遅れましたが大丈夫です。

これが私が使用するものです。FireBug のコンソールに貼り付けて実行するだけです。Web ページで「Textarea」を探します (ほとんどの場合、ページの下部にあります)。これには、A タグで見つかったすべての電子メール アドレスの区切られたリストが含まれます。

    var jquery = document.createElement('script');
    jquery.setAttribute('src', 'http://code.jquery.com/jquery-1.10.1.min.js');
    document.body.appendChild(jquery);

    var list = document.createElement('textarea');
    list.setAttribute('emaillist');
    document.body.appendChild(list);
var lijst = "";

    $("#emaillist").val("");
    $("a").each(function(idx,el){
        var mail = $(el).filter('[href*="@"]').attr("href");
        if(mail){
            lijst += mail.replace("mailto:", "")+",";
        }
    });
    $("#emaillist").val(lijst);
于 2013-07-03T11:05:23.093 に答える