web-dev-qa-db-ja.com

preg:電子メールからドメイン名を取得するためのpregパターンを作成する方法は?

[email protected]のようなメールアドレスからドメイン名gmail.comを取得したい。 Javascriptのテキストボックス値にそのパターンを使用したいと思います。

ピーズは私に上記の要件のために最適化されたより速いpregパターンを提案します...

20
Vin

@記号までのすべてを置き換えて、ドメインを取得できます。 Javascriptの場合:

var email = '[email protected]';
var domain = email.replace(/.*@/, "");
alert(domain);
54
Andy

なぜこれをしないのですか。

_var email = "[email protected]", i = email.indexOf("@");
if (i != -1) {
   email = email.substring(i);
}
_

正規表現は実際には必要ありません。email = email.split("@")[1];に移動することもできます。

6
Zoidberg

単純な文字列分割を使用しても、(技術的には)有効なアドレスである'abc@abc'@example.comのようなアドレスでは機能しません。ドメインに@文字を表示することは許可されていないため、@で分割してlast要素を取得することは問題ないと思います。

または、リクエストしたので、正規表現:[^@]+$

4
Jesse Cohen

私はこれを実装する必要性を経験し、すでに述べた手法のほとんどを組み合わせたソリューションを思いつきました。

var email = "test@[email protected]";
var email_string_array = email.split("@");
var domain_string_location = email_string_array.length -1;
var final_domain = email_string_array[domain_string_location];

したがって、電子メールに複数の@文字がある場合は、電子メール文字列を「@」で分割し、新しく作成された配列にある要素の数を計算してから1を引くだけで、その数の配列から正しい要素を取得できます。

これがjsfiddleです: http://jsfiddle.net/47yqn/

それは私にとって100%の成功を示しています!

4
Develoger

やってみます

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

または、\bsを^$に置き換えて少し調整します。これにより、A〜Z、a〜z、0〜9文字の任意のドメインに一致させることができます。

1
M'vy
var email = '[email protected]';
var domain = email.replace(/.*@/, "").split('.')[0];
console.log(domain); // gmail
1
mruanova

あなたはこれを行うことができます

var extract_company_name = function(email){
  var temp = email.replace(/.*@/, '').split('.');
    return temp[temp.length - 2];
}
extract_company_name(email)

これにより、任意の電子メールからドメインがフェッチされます。

jsbinのコード

1
Partha Roy

これを行うと、URL、メール、ウェブサイトからドメイン名を取得できます。httpを開始し、ドメイン名のみを取得します。

var str=inputAddress;
      var patt1 = "(http://|https://|ftp://|www.|[a-z0-9._%+-]+@)([^/\r\n]+)(/[^\r\n]*)?";
var result = str.match(patt1);
var domain=result===null?str:result[2];
return domain.toString().startsWith("www.")?domain.toString().slice(4):domain;
0
user8055598