Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
rfc822 email validation in JS
// See http://rosskendall.com/blog/web/javascript-function-to-check-an-email-address-conforms-to-rfc822
function isEmail(email){
return /^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/.test( email );
}
@jhyland87

This comment has been minimized.

Copy link

commented Jan 24, 2016

Why is this so different (much shorter) than the other RFC822 patterns ive found? here or here for example? (Granted, those two dont seem to work with JS regex validators such as match or test... so I like yours)

@Leonid-Yeromin

This comment has been minimized.

Copy link

commented Jun 26, 2017

Passes unicode like: あいうえお@domain.com

@Leonid-Yeromin

This comment has been minimized.

Copy link

commented Jun 26, 2017

and this:
'email@-domain.com',
'email@domain.web',
'email@111.222.333.44444',

@miniBill

This comment has been minimized.

Copy link

commented May 10, 2018

@Leonid-Yeromin with regards to the first comment: https://tools.ietf.org/html/rfc6531
wrt the second comment, avoiding the number case would overcomplicate the regex, and I don't see a problem with the second case

@curiousdustin

This comment has been minimized.

Copy link

commented Mar 4, 2019

According to wikipedia, this email should be a valid email.

Dörte@Sörensen.example.com

But the ö appears to make this regex test fail.

Thoughts?

Is this a valid email, but just not valid under RFC 822?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.