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