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 \b
s 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;
精彩评论