This is a free PHP function to validate an email address against the various relevant internet RFCs.
result = unexpected result
Percent correct
100%
99%
74%
73%
68%
Valid
Valid
Valid
Valid
Valid
1234567890123456789012345678901234567890123456789012345678901234@example.com
Valid
Valid
Valid
Valid
Valid
Invalid
Invalid
Invalid
Invalid
Invalid
Valid
Valid
Invalid
Valid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Invalid
Valid
Valid
Valid
Valid
Valid
Invalid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Invalid
Valid
first.last@[IPv6:::12.34.56.78]
Valid
Valid
Invalid
Invalid
Invalid
first.last@[IPv6:1111:2222:3333::4444:12.34.56.78]
Valid
Valid
Invalid
Invalid
Invalid
first.last@[IPv6:1111:2222:3333:4444:5555:6666:12.34.56.78]
Valid
Valid
Invalid
Invalid
Invalid
first.last@[IPv6:::1111:2222:3333:4444:5555:6666]
Valid
Valid
Invalid
Invalid
Invalid
first.last@[IPv6:1111:2222:3333::4444:5555:6666]
Valid
Valid
Invalid
Invalid
Invalid
first.last@[IPv6:1111:2222:3333:4444:5555:6666::]
Valid
Valid
Invalid
Invalid
Invalid
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:8888]
Valid
Valid
Invalid
Invalid
Invalid
first.last@x23456789012345678901234567890123456789012345678901234567890123.example.com
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Invalid
Valid
Valid
Valid
Valid
Invalid
Invalid
Invalid
Invalid
Invalid
12345678901234567890123456789012345678901234567890123456789012345@example.com
Invalid
Invalid
Invalid
Valid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Valid
Valid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Invalid
Invalid
Valid
Valid
Valid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
first.last@[IPv5:::12.34.56.78]
Invalid
Invalid
Invalid
Invalid
Invalid
first.last@[IPv6:1111:2222:3333::4444:5555:12.34.56.78]
Invalid
Invalid
Invalid
Invalid
Invalid
first.last@[IPv6:1111:2222:3333:4444:5555:12.34.56.78]
Invalid
Invalid
Invalid
Invalid
Invalid
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:12.34.56.78]
Invalid
Invalid
Invalid
Invalid
Invalid
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777]
Invalid
Invalid
Invalid
Invalid
Invalid
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:8888:9999]
Invalid
Invalid
Invalid
Invalid
Invalid
first.last@[IPv6:1111:2222::3333::4444:5555:6666]
Invalid
Invalid
Invalid
Invalid
Invalid
first.last@[IPv6:1111:2222:3333::4444:5555:6666:7777]
Invalid
Invalid
Invalid
Invalid
Invalid
first.last@[IPv6:1111:2222:333x::4444:5555]
Invalid
Invalid
Invalid
Invalid
Invalid
first.last@[IPv6:1111:2222:33333::4444:5555]
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Valid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
first.last@x234567890123456789012345678901234567890123456789012345678901234.example.com
Invalid
Invalid
Invalid
Valid
Valid
Valid
Valid
Invalid
Invalid
Valid
Valid
Valid
Invalid
Invalid
Valid
Valid
Valid
Invalid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
customer/department=shipping@example.com
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Valid
Valid
Valid
Valid
Valid
Doug\ \"Ace\"\ Lovell@example.com
Invalid
Invalid
Invalid
Invalid
Valid
Valid
Valid
Invalid
Valid
Valid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Doug\ \"Ace\"\ L\.@example.com
Invalid
Invalid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
gatsby@f.sc.ot.t.f.i.tzg.era.l.d.
Invalid
Invalid
Invalid
Invalid
Invalid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Invalid
Valid
Valid
Valid
Valid
Valid
Invalid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Invalid
Valid
Invalid
Invalid
Valid
Invalid
Valid
Valid
Valid
Valid
Invalid
Valid
Valid
Valid
Valid
Valid
Valid
test@example.example.example.com
Valid
Valid
Valid
Valid
Valid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Valid
Valid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Valid
Valid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Valid
Valid
Invalid
Valid
Valid
Valid
Valid
Invalid
Invalid
Valid
Valid
Valid
Invalid
Valid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Valid
Valid
Invalid
Valid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
customer/department@example.com
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Invalid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Valid
Valid
Valid
Invalid
Valid
"first".middle."last"@example.com
Valid
Valid
Valid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Valid
Valid
Valid
Invalid
Valid
Valid
Valid
Valid
Invalid
Valid
"first"."middle"."last"@example.com
Valid
Valid
Valid
Invalid
Valid
"first.middle"."last"@example.com
Valid
Valid
Invalid
Invalid
Valid
"first.middle.last"@example.com
Valid
Valid
Invalid
Valid
Valid
Valid
Valid
Invalid
Valid
Valid
Invalid
Invalid
Invalid
Invalid
Invalid
Valid
Valid
Invalid
Valid
Valid
first."mid\dle"."last"@example.com
Valid
Valid
Invalid
Invalid
Valid
Test. Folding. Whitespace@example.com
Valid
Valid
Invalid
Invalid
Valid
Invalid
Invalid
Valid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
first.last@[IPv6:1111:2222:3333:4444:5555:6666:12.34.567.89]
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Valid
Valid
Valid
Valid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
(foo)cal(bar)@(baz)iamcal.com(quux)
Valid
Valid
Invalid
Invalid
Valid
Valid
Valid
Invalid
Invalid
Valid
Invalid
Valid
Invalid
Invalid
Valid
cal(woo(yay)hoopla)@iamcal.com
Valid
Valid
Invalid
Invalid
Valid
Valid
Valid
Invalid
Invalid
Valid
Valid
Valid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Valid
Valid
Invalid
Invalid
Valid
first.( middle )last@example.com
Valid
Valid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
first(Welcome to the ("wonderful" (!)) world of email)@example.com
Valid
Valid
Invalid
Invalid
Valid
pete(his account)@silly.test(his host)
Valid
Valid
Invalid
Invalid
Valid
c@(Chris's host.)public.example
Valid
Valid
Invalid
Invalid
Invalid
jdoe@machine(comment). example
Valid
Valid
Invalid
Invalid
Invalid
1234 @ local(blah) .machine .example
Valid
Valid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Valid
first(abc.def).last@example.com
Valid
Valid
Invalid
Invalid
Valid
first(a"bc.def).last@example.com
Valid
Valid
Invalid
Invalid
Valid
first.(")middle.last(")@example.com
Valid
Valid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Invalid
Valid
Valid
Invalid
Invalid
Valid
first.last@x(1234567890123456789012345678901234567890123456789012345678901234567890).com
Valid
Valid
Invalid
Invalid
Valid
a(a(b(c)d(e(f))g)h(i)j)@example.com
Valid
Valid
Invalid
Invalid
Valid
a(a(b(c)d(e(f))g)(h(i)j)@example.com
Invalid
Invalid
Invalid
Invalid
Valid
Valid
Valid
Valid
Valid
Valid
Invalid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Valid
Valid
Valid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Valid
Valid
Valid
Valid
Valid
"hello my name is"@stutter.com
Valid
Valid
Valid
Valid
Valid
"Test \"Fail\" Ing"@example.com
Valid
Valid
Invalid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Invalid
Invalid
Invalid
Invalid
Invalid
shaitan@my-domain.thisisminekthx
Valid
Valid
Valid
Valid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Invalid
Valid
Invalid
Invalid
Valid
Valid
Invalid
Valid
Valid
Invalid \ Folding \ Whitespace@example.com
Invalid
Invalid
Invalid
Invalid
Valid
HM2Kinsists@(that comments are allowed)this.is.ok
Valid
Valid
Invalid
Invalid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
Valid
( x ) first ( x ) . ( x) last ( x ) @example.com
Valid
Valid
Invalid
Invalid
Valid
Valid
Valid
Invalid
Invalid
Valid
Valid
Valid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
Valid
Valid
Invalid
Invalid
Valid
Invalid
Invalid
Invalid
Valid
Valid
Invalid
Invalid
Invalid
Invalid
Valid
cdburgess+!#$%&'*-/=?+_{}|~test@gmail.com
Valid
Valid
Valid
Valid
Valid
< Back to Home | Blog posts: Email address validation | Code | Latest post