javascript regexp match against variable email domain

I am trying to have a clientside check, if an entered value:

  • is a valid e-mailadres
  • has the right domain name

I came up with following code, but it doesn't work:

var userinput = '[email protected]';
var domain = 'somethingelse.com';
domain.replace('.', '\.');
var pattern = new RegExp('/^[a-zA-Z0-9._-][email protected]'+domain+'$/');
if(!pattern.test(userinput))
 {
 alert('not a valid e-mailadres, or the wrong domain!');
 }

Anyone who can help me out? Many thanks!

Answers:

Answer

How about doing it in two steps. First, use a regex like James recommends to test for a valid(ish) e-mail address. Second, make sure the domain matches the allowed domain as Siva suggests.

var userinput = '[email protected]';
var domain = 'somethingelse.com';

var pattern = /^\b[A-Z0-9._%-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}\b$/i
if(!pattern.test(userinput) || userinput.split('@')[1] != domain)
{
  alert('not a valid e-mailadres, or the wrong domain!');
}?

You can fiddle with it here

Answer

Use split() function,

emailID.split("@")[1]
Answer

Normally I would spew out some regex here, but I think the most efficient ways of checking for email and domain are already concocted by people smarter than I.

Check this link for email validation: http://www.regular-expressions.info/email.html

from that you can limit the regex and check for a valid domain

Answer

The argument to new RegExp() is either in /regex here/ or in quotes "regex here", but NOT both. The slash form generates a regex all by itself without the need for new RegExp() at all so it's usually used only by itself and the quoted string is used with new RegExp().

var pattern = new RegExp('^[a-zA-Z0-9._-][email protected]' + domain + '$');

Email addresses can be a lot more complicated than you allow for here. If you really want to allow all possible legal email addresses, you will need something much more involved than this which a Google search will yield many choices.

If all you really need to do is check that the domain mataches a particular domain that's a lot easier even without a regex.

var userinput = '[email protected]';
var domain = 'somethingelse.com';
var testValue = "@" + domain.toLowerCase();
if (userinput.substr(userinput.length - testValue.length).toLowerCase() != testValue) {
    // incorrect domain
}

Tags

Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us Javascript

©2020 All rights reserved.