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

From an email address like [email protected] I want to fetch domain name 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 = '[email protected]';
var domain = email.replace(/.*@/, "");

Why not just do this.

var email = "[email protected]", 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 = "[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];

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:

It has show 100% success for me!


Using a simple string split won't work on addresses like '[email protected]' 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: [^@]+$


You can do this

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

this will fetch the domain from any email.

code in jsbin


I would try


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 = '[email protected]';
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._%+-][email protected])([^/\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;


Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us

©2020 All rights reserved.