开发者

preg: how to write a preg pattern to get domain name from an email?

From an email address like something@gmail.com I want to fetch domain nam开发者_开发技巧e gmail.com. i want to use that pattern on textbox value in Javascript.

Pease suggest me an optimized and faster preg pattern for above requirement...


You can replace everything up to and including the @ symbol to get the domain. In Javascript:

var email = 'test@gmail.com';
var domain = email.replace(/.*@/, "");
alert(domain);


Why not just do this.

var email = "something@gmail.com", i = email.indexOf("@");
if (i != -1) {
   email = email.substring(i);
}

Regex isn't really required, you could also go email = email.split("@")[1];


I have just experience a need to implement this and came up with the solution that combines most of already mentioned techniques:

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

So if email has multiple @ characters then you just need to split email string by "@" and calculate how many elements are there in new created array then subtract 1 from it and you can take right element from array with that number.

Here is the jsfiddle: http://jsfiddle.net/47yqn/

It has show 100% success for me!


Using a simple string split won't work on addresses like 'abc@abc'@example.com which is a valid address (technically). I believe splitting on @ and taking the last element should be fine, because no @ characters are allowed to appear in the domain.

Or, since you requested, a regex: [^@]+$


A bit cleaner and up-to-date approach:

const email = "something@gmail.com"
const domain = email.includes('@') && email.split("@").pop()

Domain will be false if email doesn't contain @ symbol.


You can do this

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

this will fetch the domain from any email.

code in jsbin


I would try

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

Or maybe tune it a little replacing \bs by ^ and $. With this you can match any domain with A-Z, a-z and 0-9 characters.


var email = 'test@gmail.com';
var domain = email.replace(/.*@/, "").split('.')[0];
console.log(domain); // gmail


You can do this to get domain name from url,email,website,with http started,only domain name

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜