6

私がやろうとしているのは、文字列からメールアドレスを抽出することですSomeName, First (First.SomeName@usa.mywebsite1.com)

これが私がすでに試したコードです:

 var stringToSearchIn="SomeName, First (First.SomeName@usa.mywebsite1.com)";


 var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;

var extractedEmail=re.exec(stringToSearchIn);

コード内の変数extractedEmailはnullを返します。

4

4 に答える 4

6

私はこれを試しましたが失敗しました

...何が起こったのかについてのあまり有用な説明ではありません。推測では、reは一致するものを見つけることができませんでした。これの明らかな原因は、ここで使用した正規表現が、メールアドレスのみを含む文字列とのみ一致することです。正規表現からエンドアンカー(^、$)を削除すると、メールアドレスが取得されます。

var re = /(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))/;
于 2013-02-28T16:50:09.443 に答える
2

ここでは正規表現は必要ありません。文字列が常に次の形式の場合

名前(メール)

(区切り文字として簡単に使用できます。

var stringToSearchIn="SomeName, First (First.SomeName@usa.mywebsite1.com)";

var extractedEmail = stringToSearchIn.substr(stringToSearchIn.indexOf('(') + 1).slice(0, -1);
于 2013-02-28T17:07:46.353 に答える
0

これは私のために働きます。

var searchInThisString ="SomeName, First (First.SomeName@usa.mywebsite1.com) SomeName2, First2 (First2.SomeName2@usa.mywebsite1.com)";

var foundEmails =[];

var emailRegex = /(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))/;

var gotcha;

while (match = emailRegex.exec(searchInThisString)){

     //-- store in array the found match email
     foundEmails.push(match[0]);

    //-- remove the found email and continue search if there are still emails
    searchInThisString= searchInThisString.replace(match[0],"")
}

alert(foundEmails.join( ""))

于 2013-08-27T02:37:49.773 に答える
-1

この正規表現を試してください

@"^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"

これは、次のいずれかを受け入れます。

  • email@email.com
  • email@email.email.com
  • email@email.email.email.com

等々...

于 2013-02-28T16:49:03.373 に答える