转载:邮箱正则表达式Comparing E-mail Address Validating Regular Expressions
Comparing E-mail Address Validating Regular Expressions
Updated: 2/3/2012
Summary
This page compares regular expressions that validate e-mail addresses in order to find the best one. The expression with the best score is currently the one used by PHP's filter_var(), which is based on a regex by Michael Rushton:
/^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){255,})(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){65,}@)(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22))(?:\.(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-[a-z0-9]+)*\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-[a-z0-9]+)*)|(?:\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\]))$/iD
The best one that's been verified to work in JavaScript is Arluison Guillaume's improvement of Warren Gaebel's regex:
/^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z][a-z])|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i
Introduction
I was writing a web application and wanted to find a regular expression
to validate user's e-mail addresses, but when I searched for one I
found dozens of slightly different variations of the same expression.
Almost all of the posts were followed by comments describing examples of
false-positives or false-negatives. But dispite all the criticism, I
couldn't find a definitive "best" expression. So, I setup arrays of some
of the most promising ones to run against a set of known valid and
invalid addresses. I think that it's better to accept a few invalid addresses than reject any valid ones, so I'm shooting for 0 false-negatives and as few false-positives as possible.
It's been about 5 years since I initially created this, and I think
we've found a relatively solid answer, but if you know of an expression
that tests better than the current one, or if you have some other
feedback feel free to contact me. If you feel think that any of the addresses are incorrectly labeled, please take it up with Cal Henderson or Dominic Sayers, since I've used their test data.
Notes
- There's no perfect regular expression to validate e-mail addresses
- If you need something more advanced than a simple regex, check out RFC 822/2822/5322 Email Address Parser in PHP or is_email() Address Validation.
- I think it's better to allow any TLD, even if it doesn't exist,
than to put a static list of currently-existing TLDs into the regex. The
problem with a static list is that the regex will be used in production
environments, but probably won't be updated when new TLDs come out. - Some of these are dependent on being executed using case-insenstive regex functions.
- This page uses PHP's ereg() and preg_match() functions, but some of these will work with JavaScript and other languages
- These regex's only check if the address is syntactically valid.
It's entirely possible that an address which does not exist on any mail
server would pass this test. Checking to see if an address actually
exists isn't always practical or necessary, though. - Slow regex's can be a security risk.
- Remember the Robustness Principle when handling addresses that fail to validate.
- Some of the test addresses below are very long, and have been truncated for displaying.
Detailed Results
/^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){255,})(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){65,}@)(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22))(?:\.(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-[a-z0-9]+)*\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-[a-z0-9]+)*)|(?:\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\]))$/iD
http://svn.php.net/viewvc/php/php-src/trunk/ext/filter/logical_filters.c?view=markup
Uses preg_match()
These should be valid | |
first.last@iana.org | valid |
1234567890123456789012345678901234567890123456789012345678901234@iana.org | valid |
"first\"last"@iana.org | valid |
"first@last"@iana.org | valid |
"first\last"@iana.org | valid |
x@x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23 [...] | valid |
1234567890123456789012345678901234567890123456789012345678@1234567890123456789012345678901234567890123456 [...] | valid |
first.last@[12.34.56.78] | valid |
first.last@[IPv6:::12.34.56.78] | valid |
first.last@[IPv6:1111:2222:3333::4444:12.34.56.78] | valid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:12.34.56.78] | valid |
first.last@[IPv6:::1111:2222:3333:4444:5555:6666] | valid |
first.last@[IPv6:1111:2222:3333::4444:5555:6666] | valid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666::] | valid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:8888] | valid |
first.last@x23456789012345678901234567890123456789012345678901234567890123.iana.org | valid |
first.last@3com.com | valid |
first.last@123.iana.org | valid |
"first\last"@iana.org | valid |
first.last@[IPv6:1111:2222:3333::4444:5555:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333::4444:5555:6666:7777] | invalid |
first.last@example.123 | invalid |
first.last@com | invalid |
"Abc\@def"@iana.org | valid |
"Fred\ Bloggs"@iana.org | valid |
"Joe.\Blow"@iana.org | valid |
"Abc@def"@iana.org | valid |
"Fred Bloggs"@iana.org | invalid |
user+mailbox@iana.org | valid |
customer/department=shipping@iana.org | valid |
$A12345@iana.org | valid |
!def!xyz%abc@iana.org | valid |
_somename@iana.org | valid |
dclo@us.ibm.com | valid |
peter.piper@iana.org | valid |
"Doug \"Ace\" L."@iana.org | invalid |
test@iana.org | valid |
TEST@iana.org | valid |
1234567890@iana.org | valid |
test+test@iana.org | valid |
test-test@iana.org | valid |
t*est@iana.org | valid |
+1~1+@iana.org | valid |
{_test_}@iana.org | valid |
"[[ test ]]"@iana.org | invalid |
test.test@iana.org | valid |
"test.test"@iana.org | valid |
test."test"@iana.org | valid |
"test@test"@iana.org | valid |
test@123.123.123.x123 | valid |
test@123.123.123.123 | invalid |
test@[123.123.123.123] | valid |
test@example.iana.org | valid |
test@example.example.iana.org | valid |
"test\test"@iana.org | valid |
test@example | invalid |
"test\blah"@iana.org | valid |
"test\blah"@iana.org | valid |
"test\"blah"@iana.org | valid |
customer/department@iana.org | valid |
_Yosemite.Sam@iana.org | valid |
~@iana.org | valid |
"Austin@Powers"@iana.org | valid |
Ima.Fool@iana.org | valid |
"Ima.Fool"@iana.org | valid |
"Ima Fool"@iana.org | invalid |
"first"."last"@iana.org | valid |
"first".middle."last"@iana.org | valid |
"first".last@iana.org | valid |
first."last"@iana.org | valid |
"first"."middle"."last"@iana.org | valid |
"first.middle"."last"@iana.org | valid |
"first.middle.last"@iana.org | valid |
"first..last"@iana.org | valid |
"first\\\"last"@iana.org | valid |
first."mid\dle"."last"@iana.org | valid |
"test blah"@iana.org |
invalid |
(foo)cal(bar)@(baz)iamcal.com(quux) | invalid |
cal@iamcal(woo).(yay)com | invalid |
cal(woo(yay)hoopla)@iamcal.com | invalid |
cal(foo\@bar)@iamcal.com | invalid |
cal(foo\)bar)@iamcal.com | invalid |
first().last@iana.org | invalid |
pete(his account)@silly.test(his host) | invalid |
c@(Chris's host.)public.example | invalid |
jdoe@machine(comment). example | invalid |
1234 @ local(blah) .machine .example | invalid |
first(abc.def).last@iana.org | invalid |
first(a"bc.def).last@iana.org | invalid |
first.(")middle.last(")@iana.org | invalid |
first(abc\(def)@iana.org | invalid |
first.last@x(1234567890123456789012345678901234567890123456789012345678901234567890).com | invalid |
a(a(b(c)d(e(f))g)h(i)j)@iana.org | invalid |
name.lastname@domain.com | valid |
a@b | invalid |
a@bar.com | valid |
aaa@[123.123.123.123] | valid |
a@bar | invalid |
a-b@bar.com | valid |
+@b.c | valid |
+@b.com | valid |
a@b.co-foo.uk | valid |
"hello my name is"@stutter.com | invalid |
"Test \"Fail\" Ing"@iana.org | invalid |
valid@about.museum | valid |
shaitan@my-domain.thisisminekthx | valid |
foobar@192.168.0.1 | invalid |
"Joe\Blow"@iana.org | valid |
HM2Kinsists@(that comments are allowed)this.is.ok | invalid |
user%uucp!path@berkeley.edu | valid |
first.last @iana.org | invalid |
cdburgess+!#$%&'*-/=?+_{}|~test@gmail.com | valid |
first.last@[IPv6:::a2:a3:a4:b1:b2:b3:b4] | invalid |
first.last@[IPv6:a1:a2:a3:a4:b1:b2:b3::] | invalid |
first.last@[IPv6:::] | valid |
first.last@[IPv6:::b4] | valid |
first.last@[IPv6:::b3:b4] | valid |
first.last@[IPv6:a1::b4] | valid |
first.last@[IPv6:a1::] | valid |
first.last@[IPv6:a1:a2::] | valid |
first.last@[IPv6:0123:4567:89ab:cdef::] | valid |
first.last@[IPv6:0123:4567:89ab:CDEF::] | valid |
first.last@[IPv6:::a3:a4:b1:ffff:11.22.33.44] | valid |
first.last@[IPv6:::a2:a3:a4:b1:ffff:11.22.33.44] | invalid |
first.last@[IPv6:a1:a2:a3:a4::11.22.33.44] | valid |
first.last@[IPv6:a1:a2:a3:a4:b1::11.22.33.44] | invalid |
first.last@[IPv6:a1::11.22.33.44] | valid |
first.last@[IPv6:a1:a2::11.22.33.44] | valid |
first.last@[IPv6:0123:4567:89ab:cdef::11.22.33.44] | valid |
first.last@[IPv6:0123:4567:89ab:CDEF::11.22.33.44] | valid |
first.last@[IPv6:a1::b2:11.22.33.44] | valid |
test@test.com | valid |
test@xn--example.com | valid |
test@example.com | valid |
These should be invalid | |
first.last@sub.do,com | invalid |
first\@last@iana.org | invalid |
123456789012345678901234567890123456789012345678901234567890@12345678901234567890123456789012345678901234 [...] | invalid |
first.last | invalid |
12345678901234567890123456789012345678901234567890123456789012345@iana.org | invalid |
.first.last@iana.org | invalid |
first.last.@iana.org | invalid |
first..last@iana.org | invalid |
"first"last"@iana.org | invalid |
"""@iana.org | invalid |
"\"@iana.org | invalid |
""@iana.org | valid |
first\@last@iana.org | invalid |
first.last@ | invalid |
x@x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23 [...] | invalid |
first.last@[.12.34.56.78] | invalid |
first.last@[12.34.56.789] | invalid |
first.last@[::12.34.56.78] | invalid |
first.last@[IPv5:::12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:8888:9999] | invalid |
first.last@[IPv6:1111:2222::3333::4444:5555:6666] | invalid |
first.last@[IPv6:1111:2222:333x::4444:5555] | invalid |
first.last@[IPv6:1111:2222:33333::4444:5555] | invalid |
first.last@-xample.com | invalid |
first.last@exampl-.com | invalid |
first.last@x234567890123456789012345678901234567890123456789012345678901234.iana.org | invalid |
abc\@def@iana.org | invalid |
abc\@iana.org | invalid |
Doug\ \"Ace\"\ Lovell@iana.org | invalid |
abc@def@iana.org | invalid |
abc\@def@iana.org | invalid |
abc\@iana.org | invalid |
@iana.org | invalid |
doug@ | invalid |
"qu@iana.org | invalid |
ote"@iana.org | invalid |
.dot@iana.org | invalid |
dot.@iana.org | invalid |
two..dot@iana.org | invalid |
"Doug "Ace" L."@iana.org | invalid |
Doug\ \"Ace\"\ L\.@iana.org | invalid |
hello world@iana.org | invalid |
gatsby@f.sc.ot.t.f.i.tzg.era.l.d. | invalid |
test.iana.org | invalid |
test.@iana.org | invalid |
test..test@iana.org | invalid |
.test@iana.org | invalid |
test@test@iana.org | invalid |
test@@iana.org | invalid |
-- test --@iana.org | invalid |
[test]@iana.org | invalid |
"test"test"@iana.org | invalid |
()[]\;:,><@iana.org | invalid |
test@. | invalid |
test@example. | invalid |
test@.org | invalid |
test@1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 [...] | invalid |
test@[123.123.123.123 | invalid |
test@123.123.123.123] | invalid |
NotAnEmail | invalid |
@NotAnEmail | invalid |
"test"blah"@iana.org | invalid |
.wooly@iana.org | invalid |
wo..oly@iana.org | invalid |
pootietang.@iana.org | invalid |
.@iana.org | invalid |
Ima Fool@iana.org | invalid |
phil.h\@\@ck@haacked.com | invalid |
foo@[\1.2.3.4] | invalid |
first."".last@iana.org | valid |
first\last@iana.org | invalid |
Abc\@def@iana.org | invalid |
Fred\ Bloggs@iana.org | invalid |
Joe.\Blow@iana.org | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:12.34.567.89] | invalid |
{^c\@**Dog^}@cartoon.com | invalid |
"foo"(yay)@(hoopla)[1.2.3.4] | invalid |
cal(foo(bar)@iamcal.com | invalid |
cal(foo)bar)@iamcal.com | invalid |
cal(foo\)@iamcal.com | invalid |
first(12345678901234567890123456789012345678901234567890)last@(123456789012345678901234567890123456789012 [...] | invalid |
first(middle)last@iana.org | invalid |
first(abc("def".ghi).mno)middle(abc("def".ghi).mno).last@(abc("def".ghi).mno)example(abc("def".ghi).mno). [...] | invalid |
a(a(b(c)d(e(f))g)(h(i)j)@iana.org | invalid |
.@ | invalid |
@bar.com | invalid |
@@bar.com | invalid |
aaa.com | invalid |
aaa@.com | invalid |
aaa@.123 | invalid |
aaa@[123.123.123.123]a | invalid |
aaa@[123.123.123.333] | invalid |
a@bar.com. | invalid |
a@-b.com | invalid |
a@b-.com | invalid |
-@..com | invalid |
-@a..com | invalid |
invalid@about.museum- | invalid |
test@...........com | invalid |
"Unicode NULL "@char.com | invalid |
Unicode NULL @char.com | invalid |
first.last@[IPv6::] | invalid |
first.last@[IPv6::::] | invalid |
first.last@[IPv6::b4] | invalid |
first.last@[IPv6::::b4] | invalid |
first.last@[IPv6::b3:b4] | invalid |
first.last@[IPv6::::b3:b4] | invalid |
first.last@[IPv6:a1:::b4] | invalid |
first.last@[IPv6:a1:] | invalid |
first.last@[IPv6:a1:::] | invalid |
first.last@[IPv6:a1:a2:] | invalid |
first.last@[IPv6:a1:a2:::] | invalid |
first.last@[IPv6::11.22.33.44] | invalid |
first.last@[IPv6::::11.22.33.44] | invalid |
first.last@[IPv6:a1:11.22.33.44] | invalid |
first.last@[IPv6:a1:::11.22.33.44] | invalid |
first.last@[IPv6:a1:a2:::11.22.33.44] | invalid |
first.last@[IPv6:0123:4567:89ab:cdef::11.22.33.xx] | invalid |
first.last@[IPv6:0123:4567:89ab:CDEFF::11.22.33.44] | invalid |
first.last@[IPv6:a1::a4:b1::b4:11.22.33.44] | invalid |
first.last@[IPv6:a1::11.22.33] | invalid |
first.last@[IPv6:a1::11.22.33.44.55] | invalid |
first.last@[IPv6:a1::b211.22.33.44] | invalid |
first.last@[IPv6:a1::b2::11.22.33.44] | invalid |
first.last@[IPv6:a1::b3:] | invalid |
first.last@[IPv6::a2::b4] | invalid |
first.last@[IPv6:a1:a2:a3:a4:b1:b2:b3:] | invalid |
first.last@[IPv6::a2:a3:a4:b1:b2:b3:b4] | invalid |
first.last@[IPv6:a1:a2:a3:a4::b1:b2:b3:b4] | invalid |
Valid: 96/134
Invalid: 130/132
/^(?:(?:(?:[^@,"\[\]\x5c\x00-\x20\x7f-\xff\.]|\x5c(?=[@,"\[\]\x5c\x00-\x20\x7f-\xff]))(?:[^@,"\[\]\x5c\x00-\x20\x7f-\xff\.]|(?<=\x5c)[@,"\[\]\x5c\x00-\x20\x7f-\xff]|\x5c(?=[@,"\[\]\x5c\x00-\x20\x7f-\xff])|\.(?=[^\.])){1,62}(?:[^@,"\[\]\x5c\x00-\x20\x7f-\xff\.]|(?<=\x5c)[@,"\[\]\x5c\x00-\x20\x7f-\xff])|[^@,"\[\]\x5c\x00-\x20\x7f-\xff\.]{1,2})|"(?:[^"]|(?<=\x5c)"){1,62}")@(?:(?!.{64})(?:[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.?|[a-zA-Z0-9]\.?)+\.(?:xn--[a-zA-Z0-9]+|[a-zA-Z]{2,6})|\[(?:[0-1]?\d?\d|2[0-4]\d|25[0-5])(?:\.(?:[0-1]?\d?\d|2[0-4]\d|25[0-5])){3}\])$/
http://jgotti.net/
Uses preg_match()
These should be valid | |
first.last@iana.org | valid |
1234567890123456789012345678901234567890123456789012345678901234@iana.org | valid |
"first\"last"@iana.org | valid |
"first@last"@iana.org | valid |
"first\last"@iana.org | valid |
x@x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23 [...] | invalid |
1234567890123456789012345678901234567890123456789012345678@1234567890123456789012345678901234567890123456 [...] | invalid |
first.last@[12.34.56.78] | valid |
first.last@[IPv6:::12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333::4444:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:12.34.56.78] | invalid |
first.last@[IPv6:::1111:2222:3333:4444:5555:6666] | invalid |
first.last@[IPv6:1111:2222:3333::4444:5555:6666] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666::] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:8888] | invalid |
first.last@x23456789012345678901234567890123456789012345678901234567890123.iana.org | invalid |
first.last@3com.com | valid |
first.last@123.iana.org | valid |
"first\last"@iana.org | valid |
first.last@[IPv6:1111:2222:3333::4444:5555:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333::4444:5555:6666:7777] | invalid |
first.last@example.123 | invalid |
first.last@com | invalid |
"Abc\@def"@iana.org | valid |
"Fred\ Bloggs"@iana.org | valid |
"Joe.\Blow"@iana.org | valid |
"Abc@def"@iana.org | valid |
"Fred Bloggs"@iana.org | valid |
user+mailbox@iana.org | valid |
customer/department=shipping@iana.org | valid |
$A12345@iana.org | valid |
!def!xyz%abc@iana.org | valid |
_somename@iana.org | valid |
dclo@us.ibm.com | valid |
peter.piper@iana.org | valid |
"Doug \"Ace\" L."@iana.org | valid |
test@iana.org | valid |
TEST@iana.org | valid |
1234567890@iana.org | valid |
test+test@iana.org | valid |
test-test@iana.org | valid |
t*est@iana.org | valid |
+1~1+@iana.org | valid |
{_test_}@iana.org | valid |
"[[ test ]]"@iana.org | valid |
test.test@iana.org | valid |
"test.test"@iana.org | valid |
test."test"@iana.org | invalid |
"test@test"@iana.org | valid |
test@123.123.123.x123 | invalid |
test@123.123.123.123 | invalid |
test@[123.123.123.123] | valid |
test@example.iana.org | valid |
test@example.example.iana.org | valid |
"test\test"@iana.org | valid |
test@example | invalid |
"test\blah"@iana.org | valid |
"test\blah"@iana.org | valid |
"test\"blah"@iana.org | valid |
customer/department@iana.org | valid |
_Yosemite.Sam@iana.org | valid |
~@iana.org | valid |
"Austin@Powers"@iana.org | valid |
Ima.Fool@iana.org | valid |
"Ima.Fool"@iana.org | valid |
"Ima Fool"@iana.org | valid |
"first"."last"@iana.org | invalid |
"first".middle."last"@iana.org | invalid |
"first".last@iana.org | invalid |
first."last"@iana.org | invalid |
"first"."middle"."last"@iana.org | invalid |
"first.middle"."last"@iana.org | invalid |
"first.middle.last"@iana.org | valid |
"first..last"@iana.org | valid |
"first\\\"last"@iana.org | valid |
first."mid\dle"."last"@iana.org | invalid |
"test blah"@iana.org |
valid |
(foo)cal(bar)@(baz)iamcal.com(quux) | invalid |
cal@iamcal(woo).(yay)com | invalid |
cal(woo(yay)hoopla)@iamcal.com | valid |
cal(foo\@bar)@iamcal.com | valid |
cal(foo\)bar)@iamcal.com | invalid |
first().last@iana.org | valid |
pete(his account)@silly.test(his host) | invalid |
c@(Chris's host.)public.example | invalid |
jdoe@machine(comment). example | invalid |
1234 @ local(blah) .machine .example | invalid |
first(abc.def).last@iana.org | valid |
first(a"bc.def).last@iana.org | invalid |
first.(")middle.last(")@iana.org | invalid |
first(abc\(def)@iana.org | invalid |
first.last@x(1234567890123456789012345678901234567890123456789012345678901234567890).com | invalid |
a(a(b(c)d(e(f))g)h(i)j)@iana.org | valid |
name.lastname@domain.com | valid |
a@b | invalid |
a@bar.com | valid |
aaa@[123.123.123.123] | valid |
a@bar | invalid |
a-b@bar.com | valid |
+@b.c | invalid |
+@b.com | valid |
a@b.co-foo.uk | valid |
"hello my name is"@stutter.com | valid |
"Test \"Fail\" Ing"@iana.org | valid |
valid@about.museum | valid |
shaitan@my-domain.thisisminekthx | invalid |
foobar@192.168.0.1 | invalid |
"Joe\Blow"@iana.org | valid |
HM2Kinsists@(that comments are allowed)this.is.ok | invalid |
user%uucp!path@berkeley.edu | valid |
first.last @iana.org | invalid |
cdburgess+!#$%&'*-/=?+_{}|~test@gmail.com | valid |
first.last@[IPv6:::a2:a3:a4:b1:b2:b3:b4] | invalid |
first.last@[IPv6:a1:a2:a3:a4:b1:b2:b3::] | invalid |
first.last@[IPv6:::] | invalid |
first.last@[IPv6:::b4] | invalid |
first.last@[IPv6:::b3:b4] | invalid |
first.last@[IPv6:a1::b4] | invalid |
first.last@[IPv6:a1::] | invalid |
first.last@[IPv6:a1:a2::] | invalid |
first.last@[IPv6:0123:4567:89ab:cdef::] | invalid |
first.last@[IPv6:0123:4567:89ab:CDEF::] | invalid |
first.last@[IPv6:::a3:a4:b1:ffff:11.22.33.44] | invalid |
first.last@[IPv6:::a2:a3:a4:b1:ffff:11.22.33.44] | invalid |
first.last@[IPv6:a1:a2:a3:a4::11.22.33.44] | invalid |
first.last@[IPv6:a1:a2:a3:a4:b1::11.22.33.44] | invalid |
first.last@[IPv6:a1::11.22.33.44] | invalid |
first.last@[IPv6:a1:a2::11.22.33.44] | invalid |
first.last@[IPv6:0123:4567:89ab:cdef::11.22.33.44] | invalid |
first.last@[IPv6:0123:4567:89ab:CDEF::11.22.33.44] | invalid |
first.last@[IPv6:a1::b2:11.22.33.44] | invalid |
test@test.com | valid |
test@xn--example.com | valid |
test@example.com | valid |
These should be invalid | |
first.last@sub.do,com | invalid |
first\@last@iana.org | valid |
123456789012345678901234567890123456789012345678901234567890@12345678901234567890123456789012345678901234 [...] | invalid |
first.last | invalid |
12345678901234567890123456789012345678901234567890123456789012345@iana.org | invalid |
.first.last@iana.org | invalid |
first.last.@iana.org | invalid |
first..last@iana.org | invalid |
"first"last"@iana.org | invalid |
"""@iana.org | invalid |
"\"@iana.org | valid |
""@iana.org | invalid |
first\@last@iana.org | valid |
first.last@ | invalid |
x@x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23 [...] | invalid |
first.last@[.12.34.56.78] | invalid |
first.last@[12.34.56.789] | invalid |
first.last@[::12.34.56.78] | invalid |
first.last@[IPv5:::12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:8888:9999] | invalid |
first.last@[IPv6:1111:2222::3333::4444:5555:6666] | invalid |
first.last@[IPv6:1111:2222:333x::4444:5555] | invalid |
first.last@[IPv6:1111:2222:33333::4444:5555] | invalid |
first.last@-xample.com | invalid |
first.last@exampl-.com | invalid |
first.last@x234567890123456789012345678901234567890123456789012345678901234.iana.org | invalid |
abc\@def@iana.org | valid |
abc\@iana.org | invalid |
Doug\ \"Ace\"\ Lovell@iana.org | valid |
abc@def@iana.org | invalid |
abc\@def@iana.org | valid |
abc\@iana.org | invalid |
@iana.org | invalid |
doug@ | invalid |
"qu@iana.org | invalid |
ote"@iana.org | invalid |
.dot@iana.org | invalid |
dot.@iana.org | invalid |
two..dot@iana.org | invalid |
"Doug "Ace" L."@iana.org | invalid |
Doug\ \"Ace\"\ L\.@iana.org | invalid |
hello world@iana.org | invalid |
gatsby@f.sc.ot.t.f.i.tzg.era.l.d. | invalid |
test.iana.org | invalid |
test.@iana.org | invalid |
test..test@iana.org | invalid |
.test@iana.org | invalid |
test@test@iana.org | invalid |
test@@iana.org | invalid |
-- test --@iana.org | invalid |
[test]@iana.org | invalid |
"test"test"@iana.org | invalid |
()[]\;:,><@iana.org | invalid |
test@. | invalid |
test@example. | invalid |
test@.org | invalid |
test@1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 [...] | invalid |
test@[123.123.123.123 | invalid |
test@123.123.123.123] | invalid |
NotAnEmail | invalid |
@NotAnEmail | invalid |
"test"blah"@iana.org | invalid |
.wooly@iana.org | invalid |
wo..oly@iana.org | invalid |
pootietang.@iana.org | invalid |
.@iana.org | invalid |
Ima Fool@iana.org | invalid |
phil.h\@\@ck@haacked.com | valid |
foo@[\1.2.3.4] | invalid |
first."".last@iana.org | invalid |
first\last@iana.org | invalid |
Abc\@def@iana.org | valid |
Fred\ Bloggs@iana.org | valid |
Joe.\Blow@iana.org | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:12.34.567.89] | invalid |
{^c\@**Dog^}@cartoon.com | valid |
"foo"(yay)@(hoopla)[1.2.3.4] | invalid |
cal(foo(bar)@iamcal.com | valid |
cal(foo)bar)@iamcal.com | valid |
cal(foo\)@iamcal.com | invalid |
first(12345678901234567890123456789012345678901234567890)last@(123456789012345678901234567890123456789012 [...] | invalid |
first(middle)last@iana.org | valid |
first(abc("def".ghi).mno)middle(abc("def".ghi).mno).last@(abc("def".ghi).mno)example(abc("def".ghi).mno). [...] | invalid |
a(a(b(c)d(e(f))g)(h(i)j)@iana.org | valid |
.@ | invalid |
@bar.com | invalid |
@@bar.com | invalid |
aaa.com | invalid |
aaa@.com | invalid |
aaa@.123 | invalid |
aaa@[123.123.123.123]a | invalid |
aaa@[123.123.123.333] | invalid |
a@bar.com. | invalid |
a@-b.com | invalid |
a@b-.com | invalid |
-@..com | invalid |
-@a..com | valid |
invalid@about.museum- | invalid |
test@...........com | invalid |
"Unicode NULL "@char.com | valid |
Unicode NULL @char.com | invalid |
first.last@[IPv6::] | invalid |
first.last@[IPv6::::] | invalid |
first.last@[IPv6::b4] | invalid |
first.last@[IPv6::::b4] | invalid |
first.last@[IPv6::b3:b4] | invalid |
first.last@[IPv6::::b3:b4] | invalid |
first.last@[IPv6:a1:::b4] | invalid |
first.last@[IPv6:a1:] | invalid |
first.last@[IPv6:a1:::] | invalid |
first.last@[IPv6:a1:a2:] | invalid |
first.last@[IPv6:a1:a2:::] | invalid |
first.last@[IPv6::11.22.33.44] | invalid |
first.last@[IPv6::::11.22.33.44] | invalid |
first.last@[IPv6:a1:11.22.33.44] | invalid |
first.last@[IPv6:a1:::11.22.33.44] | invalid |
first.last@[IPv6:a1:a2:::11.22.33.44] | invalid |
first.last@[IPv6:0123:4567:89ab:cdef::11.22.33.xx] | invalid |
first.last@[IPv6:0123:4567:89ab:CDEFF::11.22.33.44] | invalid |
first.last@[IPv6:a1::a4:b1::b4:11.22.33.44] | invalid |
first.last@[IPv6:a1::11.22.33] | invalid |
first.last@[IPv6:a1::11.22.33.44.55] | invalid |
first.last@[IPv6:a1::b211.22.33.44] | invalid |
first.last@[IPv6:a1::b2::11.22.33.44] | invalid |
first.last@[IPv6:a1::b3:] | invalid |
first.last@[IPv6::a2::b4] | invalid |
first.last@[IPv6:a1:a2:a3:a4:b1:b2:b3:] | invalid |
first.last@[IPv6::a2:a3:a4:b1:b2:b3:b4] | invalid |
first.last@[IPv6:a1:a2:a3:a4::b1:b2:b3:b4] | invalid |
Valid: 72/134
Invalid: 116/132
/\A([a-z0-9!#$%&'*+\/=?^_`{|}~-]+(\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*|"([\040-\041\043-\133\135-\176]|\134[\040-\176])*")@([0-9a-z]([0-9a-z-]*[0-9a-z])?(\.[0-9a-z]([0-9a-z-]*[0-9a-z])?)+|\[((0|[1-9][0-9]{0,2})(.(0|[1-9][0-9]{0,2})){3}|IPv6:([0-9a-f]{1,4}(:[0-9a-f]{1,4}){7}|([0-9a-f]{1,4}(:[0-9a-f]{1,4}){0,5})?::([0-9a-f]{1,4}(:[0-9a-f]{1,4}){0,5})?|[0-9a-f]{1,4}(:[0-9a-f]{1,4}){3}:(0|[1-9][0-9]{0,2})(.(0|[1-9][0-9]{0,2})){3}|([0-9a-f]{1,4}(:[0-9a-f]{1,4}){0,3})?::([0-9a-f]{1,4}(:[0-9a-f]{1,4}){0,3})?:(0|[1-9][0-9]{0,2})(.(0|[1-9][0-9]{0,2})){3}))\])\Z/i
Peter Bowen
Uses preg_match()
These should be valid | |
first.last@iana.org | valid |
1234567890123456789012345678901234567890123456789012345678901234@iana.org | valid |
"first\"last"@iana.org | valid |
"first@last"@iana.org | valid |
"first\last"@iana.org | valid |
x@x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23 [...] | valid |
1234567890123456789012345678901234567890123456789012345678@1234567890123456789012345678901234567890123456 [...] | valid |
first.last@[12.34.56.78] | valid |
first.last@[IPv6:::12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333::4444:12.34.56.78] | valid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:12.34.56.78] | invalid |
first.last@[IPv6:::1111:2222:3333:4444:5555:6666] | valid |
first.last@[IPv6:1111:2222:3333::4444:5555:6666] | valid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666::] | valid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:8888] | valid |
first.last@x23456789012345678901234567890123456789012345678901234567890123.iana.org | valid |
first.last@3com.com | valid |
first.last@123.iana.org | valid |
"first\last"@iana.org | valid |
first.last@[IPv6:1111:2222:3333::4444:5555:12.34.56.78] | valid |
first.last@[IPv6:1111:2222:3333::4444:5555:6666:7777] | valid |
first.last@example.123 | valid |
first.last@com | invalid |
"Abc\@def"@iana.org | valid |
"Fred\ Bloggs"@iana.org | valid |
"Joe.\Blow"@iana.org | valid |
"Abc@def"@iana.org | valid |
"Fred Bloggs"@iana.org | valid |
user+mailbox@iana.org | valid |
customer/department=shipping@iana.org | valid |
$A12345@iana.org | valid |
!def!xyz%abc@iana.org | valid |
_somename@iana.org | valid |
dclo@us.ibm.com | valid |
peter.piper@iana.org | valid |
"Doug \"Ace\" L."@iana.org | valid |
test@iana.org | valid |
TEST@iana.org | valid |
1234567890@iana.org | valid |
test+test@iana.org | valid |
test-test@iana.org | valid |
t*est@iana.org | valid |
+1~1+@iana.org | valid |
{_test_}@iana.org | valid |
"[[ test ]]"@iana.org | valid |
test.test@iana.org | valid |
"test.test"@iana.org | valid |
test."test"@iana.org | invalid |
"test@test"@iana.org | valid |
test@123.123.123.x123 | valid |
test@123.123.123.123 | valid |
test@[123.123.123.123] | valid |
test@example.iana.org | valid |
test@example.example.iana.org | valid |
"test\test"@iana.org | valid |
test@example | invalid |
"test\blah"@iana.org | valid |
"test\blah"@iana.org | valid |
"test\"blah"@iana.org | valid |
customer/department@iana.org | valid |
_Yosemite.Sam@iana.org | valid |
~@iana.org | valid |
"Austin@Powers"@iana.org | valid |
Ima.Fool@iana.org | valid |
"Ima.Fool"@iana.org | valid |
"Ima Fool"@iana.org | valid |
"first"."last"@iana.org | invalid |
"first".middle."last"@iana.org | invalid |
"first".last@iana.org | invalid |
first."last"@iana.org | invalid |
"first"."middle"."last"@iana.org | invalid |
"first.middle"."last"@iana.org | invalid |
"first.middle.last"@iana.org | valid |
"first..last"@iana.org | valid |
"first\\\"last"@iana.org | valid |
first."mid\dle"."last"@iana.org | invalid |
"test blah"@iana.org |
invalid |
(foo)cal(bar)@(baz)iamcal.com(quux) | invalid |
cal@iamcal(woo).(yay)com | invalid |
cal(woo(yay)hoopla)@iamcal.com | invalid |
cal(foo\@bar)@iamcal.com | invalid |
cal(foo\)bar)@iamcal.com | invalid |
first().last@iana.org | invalid |
pete(his account)@silly.test(his host) | invalid |
c@(Chris's host.)public.example | invalid |
jdoe@machine(comment). example | invalid |
1234 @ local(blah) .machine .example | invalid |
first(abc.def).last@iana.org | invalid |
first(a"bc.def).last@iana.org | invalid |
first.(")middle.last(")@iana.org | invalid |
first(abc\(def)@iana.org | invalid |
first.last@x(1234567890123456789012345678901234567890123456789012345678901234567890).com | invalid |
a(a(b(c)d(e(f))g)h(i)j)@iana.org | invalid |
name.lastname@domain.com | valid |
a@b | invalid |
a@bar.com | valid |
aaa@[123.123.123.123] | valid |
a@bar | invalid |
a-b@bar.com | valid |
+@b.c | valid |
+@b.com | valid |
a@b.co-foo.uk | valid |
"hello my name is"@stutter.com | valid |
"Test \"Fail\" Ing"@iana.org | valid |
valid@about.museum | valid |
shaitan@my-domain.thisisminekthx | valid |
foobar@192.168.0.1 | valid |
"Joe\Blow"@iana.org | valid |
HM2Kinsists@(that comments are allowed)this.is.ok | invalid |
user%uucp!path@berkeley.edu | valid |
first.last @iana.org | invalid |
cdburgess+!#$%&'*-/=?+_{}|~test@gmail.com | valid |
first.last@[IPv6:::a2:a3:a4:b1:b2:b3:b4] | invalid |
first.last@[IPv6:a1:a2:a3:a4:b1:b2:b3::] | invalid |
first.last@[IPv6:::] | valid |
first.last@[IPv6:::b4] | valid |
first.last@[IPv6:::b3:b4] | valid |
first.last@[IPv6:a1::b4] | valid |
first.last@[IPv6:a1::] | valid |
first.last@[IPv6:a1:a2::] | valid |
first.last@[IPv6:0123:4567:89ab:cdef::] | valid |
first.last@[IPv6:0123:4567:89ab:CDEF::] | valid |
first.last@[IPv6:::a3:a4:b1:ffff:11.22.33.44] | valid |
first.last@[IPv6:::a2:a3:a4:b1:ffff:11.22.33.44] | invalid |
first.last@[IPv6:a1:a2:a3:a4::11.22.33.44] | invalid |
first.last@[IPv6:a1:a2:a3:a4:b1::11.22.33.44] | invalid |
first.last@[IPv6:a1::11.22.33.44] | invalid |
first.last@[IPv6:a1:a2::11.22.33.44] | invalid |
first.last@[IPv6:0123:4567:89ab:cdef::11.22.33.44] | invalid |
first.last@[IPv6:0123:4567:89ab:CDEF::11.22.33.44] | invalid |
first.last@[IPv6:a1::b2:11.22.33.44] | valid |
test@test.com | valid |
test@xn--example.com | valid |
test@example.com | valid |
These should be invalid | |
first.last@sub.do,com | invalid |
first\@last@iana.org | invalid |
123456789012345678901234567890123456789012345678901234567890@12345678901234567890123456789012345678901234 [...] | valid |
first.last | invalid |
12345678901234567890123456789012345678901234567890123456789012345@iana.org | valid |
.first.last@iana.org | invalid |
first.last.@iana.org | invalid |
first..last@iana.org | invalid |
"first"last"@iana.org | invalid |
"""@iana.org | invalid |
"\"@iana.org | invalid |
""@iana.org | valid |
first\@last@iana.org | invalid |
first.last@ | invalid |
x@x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23 [...] | valid |
first.last@[.12.34.56.78] | invalid |
first.last@[12.34.56.789] | valid |
first.last@[::12.34.56.78] | invalid |
first.last@[IPv5:::12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:8888:9999] | invalid |
first.last@[IPv6:1111:2222::3333::4444:5555:6666] | invalid |
first.last@[IPv6:1111:2222:333x::4444:5555] | invalid |
first.last@[IPv6:1111:2222:33333::4444:5555] | invalid |
first.last@-xample.com | invalid |
first.last@exampl-.com | invalid |
first.last@x234567890123456789012345678901234567890123456789012345678901234.iana.org | valid |
abc\@def@iana.org | invalid |
abc\@iana.org | invalid |
Doug\ \"Ace\"\ Lovell@iana.org | invalid |
abc@def@iana.org | invalid |
abc\@def@iana.org | invalid |
abc\@iana.org | invalid |
@iana.org | invalid |
doug@ | invalid |
"qu@iana.org | invalid |
ote"@iana.org | invalid |
.dot@iana.org | invalid |
dot.@iana.org | invalid |
two..dot@iana.org | invalid |
"Doug "Ace" L."@iana.org | invalid |
Doug\ \"Ace\"\ L\.@iana.org | invalid |
hello world@iana.org | invalid |
gatsby@f.sc.ot.t.f.i.tzg.era.l.d. | invalid |
test.iana.org | invalid |
test.@iana.org | invalid |
test..test@iana.org | invalid |
.test@iana.org | invalid |
test@test@iana.org | invalid |
test@@iana.org | invalid |
-- test --@iana.org | invalid |
[test]@iana.org | invalid |
"test"test"@iana.org | invalid |
()[]\;:,><@iana.org | invalid |
test@. | invalid |
test@example. | invalid |
test@.org | invalid |
test@1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 [...] | valid |
test@[123.123.123.123 | invalid |
test@123.123.123.123] | invalid |
NotAnEmail | invalid |
@NotAnEmail | invalid |
"test"blah"@iana.org | invalid |
.wooly@iana.org | invalid |
wo..oly@iana.org | invalid |
pootietang.@iana.org | invalid |
.@iana.org | invalid |
Ima Fool@iana.org | invalid |
phil.h\@\@ck@haacked.com | invalid |
foo@[\1.2.3.4] | invalid |
first."".last@iana.org | invalid |
first\last@iana.org | invalid |
Abc\@def@iana.org | invalid |
Fred\ Bloggs@iana.org | invalid |
Joe.\Blow@iana.org | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:12.34.567.89] | invalid |
{^c\@**Dog^}@cartoon.com | invalid |
"foo"(yay)@(hoopla)[1.2.3.4] | invalid |
cal(foo(bar)@iamcal.com | invalid |
cal(foo)bar)@iamcal.com | invalid |
cal(foo\)@iamcal.com | invalid |
first(12345678901234567890123456789012345678901234567890)last@(123456789012345678901234567890123456789012 [...] | invalid |
first(middle)last@iana.org | invalid |
first(abc("def".ghi).mno)middle(abc("def".ghi).mno).last@(abc("def".ghi).mno)example(abc("def".ghi).mno). [...] | invalid |
a(a(b(c)d(e(f))g)(h(i)j)@iana.org | invalid |
.@ | invalid |
@bar.com | invalid |
@@bar.com | invalid |
aaa.com | invalid |
aaa@.com | invalid |
aaa@.123 | invalid |
aaa@[123.123.123.123]a | invalid |
aaa@[123.123.123.333] | valid |
a@bar.com. | invalid |
a@-b.com | invalid |
a@b-.com | invalid |
-@..com | invalid |
-@a..com | invalid |
invalid@about.museum- | invalid |
test@...........com | invalid |
"Unicode NULL "@char.com | invalid |
Unicode NULL @char.com | invalid |
first.last@[IPv6::] | invalid |
first.last@[IPv6::::] | invalid |
first.last@[IPv6::b4] | invalid |
first.last@[IPv6::::b4] | invalid |
first.last@[IPv6::b3:b4] | invalid |
first.last@[IPv6::::b3:b4] | invalid |
first.last@[IPv6:a1:::b4] | invalid |
first.last@[IPv6:a1:] | invalid |
first.last@[IPv6:a1:::] | invalid |
first.last@[IPv6:a1:a2:] | invalid |
first.last@[IPv6:a1:a2:::] | invalid |
first.last@[IPv6::11.22.33.44] | invalid |
first.last@[IPv6::::11.22.33.44] | valid |
first.last@[IPv6:a1:11.22.33.44] | invalid |
first.last@[IPv6:a1:::11.22.33.44] | valid |
first.last@[IPv6:a1:a2:::11.22.33.44] | valid |
first.last@[IPv6:0123:4567:89ab:cdef::11.22.33.xx] | invalid |
first.last@[IPv6:0123:4567:89ab:CDEFF::11.22.33.44] | invalid |
first.last@[IPv6:a1::a4:b1::b4:11.22.33.44] | invalid |
first.last@[IPv6:a1::11.22.33] | invalid |
first.last@[IPv6:a1::11.22.33.44.55] | invalid |
first.last@[IPv6:a1::b211.22.33.44] | invalid |
first.last@[IPv6:a1::b2::11.22.33.44] | invalid |
first.last@[IPv6:a1::b3:] | invalid |
first.last@[IPv6::a2::b4] | invalid |
first.last@[IPv6:a1:a2:a3:a4:b1:b2:b3:] | invalid |
first.last@[IPv6::a2:a3:a4:b1:b2:b3:b4] | invalid |
first.last@[IPv6:a1:a2:a3:a4::b1:b2:b3:b4] | valid |
Valid: 92/134
Invalid: 120/132
/^([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,6})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)$/i
James Watts and Francisco Jose Martin Moreno
Uses preg_match()
These should be valid | |
first.last@iana.org | valid |
1234567890123456789012345678901234567890123456789012345678901234@iana.org | valid |
"first\"last"@iana.org | invalid |
"first@last"@iana.org | invalid |
"first\last"@iana.org | invalid |
x@x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23 [...] | invalid |
1234567890123456789012345678901234567890123456789012345678@1234567890123456789012345678901234567890123456 [...] | valid |
first.last@[12.34.56.78] | invalid |
first.last@[IPv6:::12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333::4444:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:12.34.56.78] | invalid |
first.last@[IPv6:::1111:2222:3333:4444:5555:6666] | invalid |
first.last@[IPv6:1111:2222:3333::4444:5555:6666] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666::] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:8888] | invalid |
first.last@x23456789012345678901234567890123456789012345678901234567890123.iana.org | valid |
first.last@3com.com | valid |
first.last@123.iana.org | valid |
"first\last"@iana.org | invalid |
first.last@[IPv6:1111:2222:3333::4444:5555:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333::4444:5555:6666:7777] | invalid |
first.last@example.123 | invalid |
first.last@com | invalid |
"Abc\@def"@iana.org | invalid |
"Fred\ Bloggs"@iana.org | invalid |
"Joe.\Blow"@iana.org | invalid |
"Abc@def"@iana.org | invalid |
"Fred Bloggs"@iana.org | invalid |
user+mailbox@iana.org | valid |
customer/department=shipping@iana.org | valid |
$A12345@iana.org | valid |
!def!xyz%abc@iana.org | valid |
_somename@iana.org | valid |
dclo@us.ibm.com | valid |
peter.piper@iana.org | valid |
"Doug \"Ace\" L."@iana.org | invalid |
test@iana.org | valid |
TEST@iana.org | valid |
1234567890@iana.org | valid |
test+test@iana.org | valid |
test-test@iana.org | valid |
t*est@iana.org | valid |
+1~1+@iana.org | valid |
{_test_}@iana.org | valid |
"[[ test ]]"@iana.org | invalid |
test.test@iana.org | valid |
"test.test"@iana.org | invalid |
test."test"@iana.org | invalid |
"test@test"@iana.org | invalid |
test@123.123.123.x123 | invalid |
test@123.123.123.123 | valid |
test@[123.123.123.123] | invalid |
test@example.iana.org | valid |
test@example.example.iana.org | valid |
"test\test"@iana.org | invalid |
test@example | invalid |
"test\blah"@iana.org | invalid |
"test\blah"@iana.org | invalid |
"test\"blah"@iana.org | invalid |
customer/department@iana.org | valid |
_Yosemite.Sam@iana.org | valid |
~@iana.org | valid |
"Austin@Powers"@iana.org | invalid |
Ima.Fool@iana.org | valid |
"Ima.Fool"@iana.org | invalid |
"Ima Fool"@iana.org | invalid |
"first"."last"@iana.org | invalid |
"first".middle."last"@iana.org | invalid |
"first".last@iana.org | invalid |
first."last"@iana.org | invalid |
"first"."middle"."last"@iana.org | invalid |
"first.middle"."last"@iana.org | invalid |
"first.middle.last"@iana.org | invalid |
"first..last"@iana.org | invalid |
"first\\\"last"@iana.org | invalid |
first."mid\dle"."last"@iana.org | invalid |
"test blah"@iana.org |
invalid |
(foo)cal(bar)@(baz)iamcal.com(quux) | invalid |
cal@iamcal(woo).(yay)com | invalid |
cal(woo(yay)hoopla)@iamcal.com | invalid |
cal(foo\@bar)@iamcal.com | invalid |
cal(foo\)bar)@iamcal.com | invalid |
first().last@iana.org | invalid |
pete(his account)@silly.test(his host) | invalid |
c@(Chris's host.)public.example | invalid |
jdoe@machine(comment). example | invalid |
1234 @ local(blah) .machine .example | invalid |
first(abc.def).last@iana.org | invalid |
first(a"bc.def).last@iana.org | invalid |
first.(")middle.last(")@iana.org | invalid |
first(abc\(def)@iana.org | invalid |
first.last@x(1234567890123456789012345678901234567890123456789012345678901234567890).com | invalid |
a(a(b(c)d(e(f))g)h(i)j)@iana.org | invalid |
name.lastname@domain.com | valid |
a@b | invalid |
a@bar.com | valid |
aaa@[123.123.123.123] | invalid |
a@bar | invalid |
a-b@bar.com | valid |
+@b.c | invalid |
+@b.com | valid |
a@b.co-foo.uk | valid |
"hello my name is"@stutter.com | invalid |
"Test \"Fail\" Ing"@iana.org | invalid |
valid@about.museum | valid |
shaitan@my-domain.thisisminekthx | invalid |
foobar@192.168.0.1 | valid |
"Joe\Blow"@iana.org | invalid |
HM2Kinsists@(that comments are allowed)this.is.ok | invalid |
user%uucp!path@berkeley.edu | valid |
first.last @iana.org | invalid |
cdburgess+!#$%&'*-/=?+_{}|~test@gmail.com | valid |
first.last@[IPv6:::a2:a3:a4:b1:b2:b3:b4] | invalid |
first.last@[IPv6:a1:a2:a3:a4:b1:b2:b3::] | invalid |
first.last@[IPv6:::] | invalid |
first.last@[IPv6:::b4] | invalid |
first.last@[IPv6:::b3:b4] | invalid |
first.last@[IPv6:a1::b4] | invalid |
first.last@[IPv6:a1::] | invalid |
first.last@[IPv6:a1:a2::] | invalid |
first.last@[IPv6:0123:4567:89ab:cdef::] | invalid |
first.last@[IPv6:0123:4567:89ab:CDEF::] | invalid |
first.last@[IPv6:::a3:a4:b1:ffff:11.22.33.44] | invalid |
first.last@[IPv6:::a2:a3:a4:b1:ffff:11.22.33.44] | invalid |
first.last@[IPv6:a1:a2:a3:a4::11.22.33.44] | invalid |
first.last@[IPv6:a1:a2:a3:a4:b1::11.22.33.44] | invalid |
first.last@[IPv6:a1::11.22.33.44] | invalid |
first.last@[IPv6:a1:a2::11.22.33.44] | invalid |
first.last@[IPv6:0123:4567:89ab:cdef::11.22.33.44] | invalid |
first.last@[IPv6:0123:4567:89ab:CDEF::11.22.33.44] | invalid |
first.last@[IPv6:a1::b2:11.22.33.44] | invalid |
test@test.com | valid |
test@xn--example.com | valid |
test@example.com | valid |
These should be invalid | |
first.last@sub.do,com | invalid |
first\@last@iana.org | invalid |
123456789012345678901234567890123456789012345678901234567890@12345678901234567890123456789012345678901234 [...] | valid |
first.last | invalid |
12345678901234567890123456789012345678901234567890123456789012345@iana.org | valid |
.first.last@iana.org | invalid |
first.last.@iana.org | invalid |
first..last@iana.org | invalid |
"first"last"@iana.org | invalid |
"""@iana.org | invalid |
"\"@iana.org | invalid |
""@iana.org | invalid |
first\@last@iana.org | invalid |
first.last@ | invalid |
x@x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23 [...] | invalid |
first.last@[.12.34.56.78] | invalid |
first.last@[12.34.56.789] | invalid |
first.last@[::12.34.56.78] | invalid |
first.last@[IPv5:::12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:8888:9999] | invalid |
first.last@[IPv6:1111:2222::3333::4444:5555:6666] | invalid |
first.last@[IPv6:1111:2222:333x::4444:5555] | invalid |
first.last@[IPv6:1111:2222:33333::4444:5555] | invalid |
first.last@-xample.com | invalid |
first.last@exampl-.com | invalid |
first.last@x234567890123456789012345678901234567890123456789012345678901234.iana.org | valid |
abc\@def@iana.org | invalid |
abc\@iana.org | invalid |
Doug\ \"Ace\"\ Lovell@iana.org | invalid |
abc@def@iana.org | invalid |
abc\@def@iana.org | invalid |
abc\@iana.org | invalid |
@iana.org | invalid |
doug@ | invalid |
"qu@iana.org | invalid |
ote"@iana.org | invalid |
.dot@iana.org | invalid |
dot.@iana.org | invalid |
two..dot@iana.org | invalid |
"Doug "Ace" L."@iana.org | invalid |
Doug\ \"Ace\"\ L\.@iana.org | invalid |
hello world@iana.org | invalid |
gatsby@f.sc.ot.t.f.i.tzg.era.l.d. | invalid |
test.iana.org | invalid |
test.@iana.org | invalid |
test..test@iana.org | invalid |
.test@iana.org | invalid |
test@test@iana.org | invalid |
test@@iana.org | invalid |
-- test --@iana.org | invalid |
[test]@iana.org | invalid |
"test"test"@iana.org | invalid |
()[]\;:,><@iana.org | invalid |
test@. | invalid |
test@example. | invalid |
test@.org | invalid |
test@1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 [...] | invalid |
test@[123.123.123.123 | invalid |
test@123.123.123.123] | invalid |
NotAnEmail | invalid |
@NotAnEmail | invalid |
"test"blah"@iana.org | invalid |
.wooly@iana.org | invalid |
wo..oly@iana.org | invalid |
pootietang.@iana.org | invalid |
.@iana.org | invalid |
Ima Fool@iana.org | invalid |
phil.h\@\@ck@haacked.com | invalid |
foo@[\1.2.3.4] | invalid |
first."".last@iana.org | invalid |
first\last@iana.org | invalid |
Abc\@def@iana.org | invalid |
Fred\ Bloggs@iana.org | invalid |
Joe.\Blow@iana.org | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:12.34.567.89] | invalid |
{^c\@**Dog^}@cartoon.com | invalid |
"foo"(yay)@(hoopla)[1.2.3.4] | invalid |
cal(foo(bar)@iamcal.com | invalid |
cal(foo)bar)@iamcal.com | invalid |
cal(foo\)@iamcal.com | invalid |
first(12345678901234567890123456789012345678901234567890)last@(123456789012345678901234567890123456789012 [...] | invalid |
first(middle)last@iana.org | invalid |
first(abc("def".ghi).mno)middle(abc("def".ghi).mno).last@(abc("def".ghi).mno)example(abc("def".ghi).mno). [...] | invalid |
a(a(b(c)d(e(f))g)(h(i)j)@iana.org | invalid |
.@ | invalid |
@bar.com | invalid |
@@bar.com | invalid |
aaa.com | invalid |
aaa@.com | invalid |
aaa@.123 | invalid |
aaa@[123.123.123.123]a | invalid |
aaa@[123.123.123.333] | invalid |
a@bar.com. | invalid |
a@-b.com | invalid |
a@b-.com | invalid |
-@..com | invalid |
-@a..com | invalid |
invalid@about.museum- | invalid |
test@...........com | invalid |
"Unicode NULL "@char.com | invalid |
Unicode NULL @char.com | invalid |
first.last@[IPv6::] | invalid |
first.last@[IPv6::::] | invalid |
first.last@[IPv6::b4] | invalid |
first.last@[IPv6::::b4] | invalid |
first.last@[IPv6::b3:b4] | invalid |
first.last@[IPv6::::b3:b4] | invalid |
first.last@[IPv6:a1:::b4] | invalid |
first.last@[IPv6:a1:] | invalid |
first.last@[IPv6:a1:::] | invalid |
first.last@[IPv6:a1:a2:] | invalid |
first.last@[IPv6:a1:a2:::] | invalid |
first.last@[IPv6::11.22.33.44] | invalid |
first.last@[IPv6::::11.22.33.44] | invalid |
first.last@[IPv6:a1:11.22.33.44] | invalid |
first.last@[IPv6:a1:::11.22.33.44] | invalid |
first.last@[IPv6:a1:a2:::11.22.33.44] | invalid |
first.last@[IPv6:0123:4567:89ab:cdef::11.22.33.xx] | invalid |
first.last@[IPv6:0123:4567:89ab:CDEFF::11.22.33.44] | invalid |
first.last@[IPv6:a1::a4:b1::b4:11.22.33.44] | invalid |
first.last@[IPv6:a1::11.22.33] | invalid |
first.last@[IPv6:a1::11.22.33.44.55] | invalid |
first.last@[IPv6:a1::b211.22.33.44] | invalid |
first.last@[IPv6:a1::b2::11.22.33.44] | invalid |
first.last@[IPv6:a1::b3:] | invalid |
first.last@[IPv6::a2::b4] | invalid |
first.last@[IPv6:a1:a2:a3:a4:b1:b2:b3:] | invalid |
first.last@[IPv6::a2:a3:a4:b1:b2:b3:b4] | invalid |
first.last@[IPv6:a1:a2:a3:a4::b1:b2:b3:b4] | invalid |
Valid: 41/134
Invalid: 129/132
/^[-_a-z0-9\'+*$^&%=~!?{}]++(?:\.[-_a-z0-9\'+*$^&%=~!?{}]+)*+@(?:(?![-.])[-a-z0-9.]+(?<![-.])\.[a-z]{2,6}|\d{1,3}(?:\.\d{1,3}){3})(?::\d++)?$/iD
http://pastie.textmate.org/159503
Uses preg_match()
These should be valid | |
first.last@iana.org | valid |
1234567890123456789012345678901234567890123456789012345678901234@iana.org | valid |
"first\"last"@iana.org | invalid |
"first@last"@iana.org | invalid |
"first\last"@iana.org | invalid |
x@x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23 [...] | invalid |
1234567890123456789012345678901234567890123456789012345678@1234567890123456789012345678901234567890123456 [...] | valid |
first.last@[12.34.56.78] | invalid |
first.last@[IPv6:::12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333::4444:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:12.34.56.78] | invalid |
first.last@[IPv6:::1111:2222:3333:4444:5555:6666] | invalid |
first.last@[IPv6:1111:2222:3333::4444:5555:6666] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666::] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:8888] | invalid |
first.last@x23456789012345678901234567890123456789012345678901234567890123.iana.org | valid |
first.last@3com.com | valid |
first.last@123.iana.org | valid |
"first\last"@iana.org | invalid |
first.last@[IPv6:1111:2222:3333::4444:5555:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333::4444:5555:6666:7777] | invalid |
first.last@example.123 | invalid |
first.last@com | invalid |
"Abc\@def"@iana.org | invalid |
"Fred\ Bloggs"@iana.org | invalid |
"Joe.\Blow"@iana.org | invalid |
"Abc@def"@iana.org | invalid |
"Fred Bloggs"@iana.org | invalid |
user+mailbox@iana.org | valid |
customer/department=shipping@iana.org | invalid |
$A12345@iana.org | valid |
!def!xyz%abc@iana.org | valid |
_somename@iana.org | valid |
dclo@us.ibm.com | valid |
peter.piper@iana.org | valid |
"Doug \"Ace\" L."@iana.org | invalid |
test@iana.org | valid |
TEST@iana.org | valid |
1234567890@iana.org | valid |
test+test@iana.org | valid |
test-test@iana.org | valid |
t*est@iana.org | valid |
+1~1+@iana.org | valid |
{_test_}@iana.org | valid |
"[[ test ]]"@iana.org | invalid |
test.test@iana.org | valid |
"test.test"@iana.org | invalid |
test."test"@iana.org | invalid |
"test@test"@iana.org | invalid |
test@123.123.123.x123 | invalid |
test@123.123.123.123 | valid |
test@[123.123.123.123] | invalid |
test@example.iana.org | valid |
test@example.example.iana.org | valid |
"test\test"@iana.org | invalid |
test@example | invalid |
"test\blah"@iana.org | invalid |
"test\blah"@iana.org | invalid |
"test\"blah"@iana.org | invalid |
customer/department@iana.org | invalid |
_Yosemite.Sam@iana.org | valid |
~@iana.org | valid |
"Austin@Powers"@iana.org | invalid |
Ima.Fool@iana.org | valid |
"Ima.Fool"@iana.org | invalid |
"Ima Fool"@iana.org | invalid |
"first"."last"@iana.org | invalid |
"first".middle."last"@iana.org | invalid |
"first".last@iana.org | invalid |
first."last"@iana.org | invalid |
"first"."middle"."last"@iana.org | invalid |
"first.middle"."last"@iana.org | invalid |
"first.middle.last"@iana.org | invalid |
"first..last"@iana.org | invalid |
"first\\\"last"@iana.org | invalid |
first."mid\dle"."last"@iana.org | invalid |
"test blah"@iana.org |
invalid |
(foo)cal(bar)@(baz)iamcal.com(quux) | invalid |
cal@iamcal(woo).(yay)com | invalid |
cal(woo(yay)hoopla)@iamcal.com | invalid |
cal(foo\@bar)@iamcal.com | invalid |
cal(foo\)bar)@iamcal.com | invalid |
first().last@iana.org | invalid |
pete(his account)@silly.test(his host) | invalid |
c@(Chris's host.)public.example | invalid |
jdoe@machine(comment). example | invalid |
1234 @ local(blah) .machine .example | invalid |
first(abc.def).last@iana.org | invalid |
first(a"bc.def).last@iana.org | invalid |
first.(")middle.last(")@iana.org | invalid |
first(abc\(def)@iana.org | invalid |
first.last@x(1234567890123456789012345678901234567890123456789012345678901234567890).com | invalid |
a(a(b(c)d(e(f))g)h(i)j)@iana.org | invalid |
name.lastname@domain.com | valid |
a@b | invalid |
a@bar.com | valid |
aaa@[123.123.123.123] | invalid |
a@bar | invalid |
a-b@bar.com | valid |
+@b.c | invalid |
+@b.com | valid |
a@b.co-foo.uk | valid |
"hello my name is"@stutter.com | invalid |
"Test \"Fail\" Ing"@iana.org | invalid |
valid@about.museum | valid |
shaitan@my-domain.thisisminekthx | invalid |
foobar@192.168.0.1 | valid |
"Joe\Blow"@iana.org | invalid |
HM2Kinsists@(that comments are allowed)this.is.ok | invalid |
user%uucp!path@berkeley.edu | valid |
first.last @iana.org | invalid |
cdburgess+!#$%&'*-/=?+_{}|~test@gmail.com | invalid |
first.last@[IPv6:::a2:a3:a4:b1:b2:b3:b4] | invalid |
first.last@[IPv6:a1:a2:a3:a4:b1:b2:b3::] | invalid |
first.last@[IPv6:::] | invalid |
first.last@[IPv6:::b4] | invalid |
first.last@[IPv6:::b3:b4] | invalid |
first.last@[IPv6:a1::b4] | invalid |
first.last@[IPv6:a1::] | invalid |
first.last@[IPv6:a1:a2::] | invalid |
first.last@[IPv6:0123:4567:89ab:cdef::] | invalid |
first.last@[IPv6:0123:4567:89ab:CDEF::] | invalid |
first.last@[IPv6:::a3:a4:b1:ffff:11.22.33.44] | invalid |
first.last@[IPv6:::a2:a3:a4:b1:ffff:11.22.33.44] | invalid |
first.last@[IPv6:a1:a2:a3:a4::11.22.33.44] | invalid |
first.last@[IPv6:a1:a2:a3:a4:b1::11.22.33.44] | invalid |
first.last@[IPv6:a1::11.22.33.44] | invalid |
first.last@[IPv6:a1:a2::11.22.33.44] | invalid |
first.last@[IPv6:0123:4567:89ab:cdef::11.22.33.44] | invalid |
first.last@[IPv6:0123:4567:89ab:CDEF::11.22.33.44] | invalid |
first.last@[IPv6:a1::b2:11.22.33.44] | invalid |
test@test.com | valid |
test@xn--example.com | valid |
test@example.com | valid |
These should be invalid | |
first.last@sub.do,com | invalid |
first\@last@iana.org | invalid |
123456789012345678901234567890123456789012345678901234567890@12345678901234567890123456789012345678901234 [...] | valid |
first.last | invalid |
12345678901234567890123456789012345678901234567890123456789012345@iana.org | valid |
.first.last@iana.org | invalid |
first.last.@iana.org | invalid |
first..last@iana.org | invalid |
"first"last"@iana.org | invalid |
"""@iana.org | invalid |
"\"@iana.org | invalid |
""@iana.org | invalid |
first\@last@iana.org | invalid |
first.last@ | invalid |
x@x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23 [...] | invalid |
first.last@[.12.34.56.78] | invalid |
first.last@[12.34.56.789] | invalid |
first.last@[::12.34.56.78] | invalid |
first.last@[IPv5:::12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:8888:9999] | invalid |
first.last@[IPv6:1111:2222::3333::4444:5555:6666] | invalid |
first.last@[IPv6:1111:2222:333x::4444:5555] | invalid |
first.last@[IPv6:1111:2222:33333::4444:5555] | invalid |
first.last@-xample.com | invalid |
first.last@exampl-.com | invalid |
first.last@x234567890123456789012345678901234567890123456789012345678901234.iana.org | valid |
abc\@def@iana.org | invalid |
abc\@iana.org | invalid |
Doug\ \"Ace\"\ Lovell@iana.org | invalid |
abc@def@iana.org | invalid |
abc\@def@iana.org | invalid |
abc\@iana.org | invalid |
@iana.org | invalid |
doug@ | invalid |
"qu@iana.org | invalid |
ote"@iana.org | invalid |
.dot@iana.org | invalid |
dot.@iana.org | invalid |
two..dot@iana.org | invalid |
"Doug "Ace" L."@iana.org | invalid |
Doug\ \"Ace\"\ L\.@iana.org | invalid |
hello world@iana.org | invalid |
gatsby@f.sc.ot.t.f.i.tzg.era.l.d. | invalid |
test.iana.org | invalid |
test.@iana.org | invalid |
test..test@iana.org | invalid |
.test@iana.org | invalid |
test@test@iana.org | invalid |
test@@iana.org | invalid |
-- test --@iana.org | invalid |
[test]@iana.org | invalid |
"test"test"@iana.org | invalid |
()[]\;:,><@iana.org | invalid |
test@. | invalid |
test@example. | invalid |
test@.org | invalid |
test@1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 [...] | valid |
test@[123.123.123.123 | invalid |
test@123.123.123.123] | invalid |
NotAnEmail | invalid |
@NotAnEmail | invalid |
"test"blah"@iana.org | invalid |
.wooly@iana.org | invalid |
wo..oly@iana.org | invalid |
pootietang.@iana.org | invalid |
.@iana.org | invalid |
Ima Fool@iana.org | invalid |
phil.h\@\@ck@haacked.com | invalid |
foo@[\1.2.3.4] | invalid |
first."".last@iana.org | invalid |
first\last@iana.org | invalid |
Abc\@def@iana.org | invalid |
Fred\ Bloggs@iana.org | invalid |
Joe.\Blow@iana.org | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:12.34.567.89] | invalid |
{^c\@**Dog^}@cartoon.com | invalid |
"foo"(yay)@(hoopla)[1.2.3.4] | invalid |
cal(foo(bar)@iamcal.com | invalid |
cal(foo)bar)@iamcal.com | invalid |
cal(foo\)@iamcal.com | invalid |
first(12345678901234567890123456789012345678901234567890)last@(123456789012345678901234567890123456789012 [...] | invalid |
first(middle)last@iana.org | invalid |
first(abc("def".ghi).mno)middle(abc("def".ghi).mno).last@(abc("def".ghi).mno)example(abc("def".ghi).mno). [...] | invalid |
a(a(b(c)d(e(f))g)(h(i)j)@iana.org | invalid |
.@ | invalid |
@bar.com | invalid |
@@bar.com | invalid |
aaa.com | invalid |
aaa@.com | invalid |
aaa@.123 | invalid |
aaa@[123.123.123.123]a | invalid |
aaa@[123.123.123.333] | invalid |
a@bar.com. | invalid |
a@-b.com | invalid |
a@b-.com | invalid |
-@..com | invalid |
-@a..com | invalid |
invalid@about.museum- | invalid |
test@...........com | invalid |
"Unicode NULL "@char.com | invalid |
Unicode NULL @char.com | invalid |
first.last@[IPv6::] | invalid |
first.last@[IPv6::::] | invalid |
first.last@[IPv6::b4] | invalid |
first.last@[IPv6::::b4] | invalid |
first.last@[IPv6::b3:b4] | invalid |
first.last@[IPv6::::b3:b4] | invalid |
first.last@[IPv6:a1:::b4] | invalid |
first.last@[IPv6:a1:] | invalid |
first.last@[IPv6:a1:::] | invalid |
first.last@[IPv6:a1:a2:] | invalid |
first.last@[IPv6:a1:a2:::] | invalid |
first.last@[IPv6::11.22.33.44] | invalid |
first.last@[IPv6::::11.22.33.44] | invalid |
first.last@[IPv6:a1:11.22.33.44] | invalid |
first.last@[IPv6:a1:::11.22.33.44] | invalid |
first.last@[IPv6:a1:a2:::11.22.33.44] | invalid |
first.last@[IPv6:0123:4567:89ab:cdef::11.22.33.xx] | invalid |
first.last@[IPv6:0123:4567:89ab:CDEFF::11.22.33.44] | invalid |
first.last@[IPv6:a1::a4:b1::b4:11.22.33.44] | invalid |
first.last@[IPv6:a1::11.22.33] | invalid |
first.last@[IPv6:a1::11.22.33.44.55] | invalid |
first.last@[IPv6:a1::b211.22.33.44] | invalid |
first.last@[IPv6:a1::b2::11.22.33.44] | invalid |
first.last@[IPv6:a1::b3:] | invalid |
first.last@[IPv6::a2::b4] | invalid |
first.last@[IPv6:a1:a2:a3:a4:b1:b2:b3:] | invalid |
first.last@[IPv6::a2:a3:a4:b1:b2:b3:b4] | invalid |
first.last@[IPv6:a1:a2:a3:a4::b1:b2:b3:b4] | invalid |
Valid: 38/134
Invalid: 128/132
/^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.([a-z][a-z]+)|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i
http://www.mi-ange.net/blog/msg.php?id=79&lng=en
Uses preg_match()
These should be valid | |
first.last@iana.org | valid |
1234567890123456789012345678901234567890123456789012345678901234@iana.org | valid |
"first\"last"@iana.org | invalid |
"first@last"@iana.org | invalid |
"first\last"@iana.org | invalid |
x@x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23 [...] | invalid |
1234567890123456789012345678901234567890123456789012345678@1234567890123456789012345678901234567890123456 [...] | valid |
first.last@[12.34.56.78] | invalid |
first.last@[IPv6:::12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333::4444:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:12.34.56.78] | invalid |
first.last@[IPv6:::1111:2222:3333:4444:5555:6666] | invalid |
first.last@[IPv6:1111:2222:3333::4444:5555:6666] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666::] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:8888] | invalid |
first.last@x23456789012345678901234567890123456789012345678901234567890123.iana.org | valid |
first.last@3com.com | valid |
first.last@123.iana.org | valid |
"first\last"@iana.org | invalid |
first.last@[IPv6:1111:2222:3333::4444:5555:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333::4444:5555:6666:7777] | invalid |
first.last@example.123 | invalid |
first.last@com | invalid |
"Abc\@def"@iana.org | invalid |
"Fred\ Bloggs"@iana.org | invalid |
"Joe.\Blow"@iana.org | invalid |
"Abc@def"@iana.org | invalid |
"Fred Bloggs"@iana.org | invalid |
user+mailbox@iana.org | valid |
customer/department=shipping@iana.org | invalid |
$A12345@iana.org | valid |
!def!xyz%abc@iana.org | valid |
_somename@iana.org | valid |
dclo@us.ibm.com | valid |
peter.piper@iana.org | valid |
"Doug \"Ace\" L."@iana.org | invalid |
test@iana.org | valid |
TEST@iana.org | valid |
1234567890@iana.org | valid |
test+test@iana.org | valid |
test-test@iana.org | valid |
t*est@iana.org | valid |
+1~1+@iana.org | valid |
{_test_}@iana.org | valid |
"[[ test ]]"@iana.org | invalid |
test.test@iana.org | valid |
"test.test"@iana.org | invalid |
test."test"@iana.org | invalid |
"test@test"@iana.org | invalid |
test@123.123.123.x123 | invalid |
test@123.123.123.123 | valid |
test@[123.123.123.123] | invalid |
test@example.iana.org | valid |
test@example.example.iana.org | valid |
"test\test"@iana.org | invalid |
test@example | invalid |
"test\blah"@iana.org | invalid |
"test\blah"@iana.org | invalid |
"test\"blah"@iana.org | invalid |
customer/department@iana.org | invalid |
_Yosemite.Sam@iana.org | valid |
~@iana.org | valid |
"Austin@Powers"@iana.org | invalid |
Ima.Fool@iana.org | valid |
"Ima.Fool"@iana.org | invalid |
"Ima Fool"@iana.org | invalid |
"first"."last"@iana.org | invalid |
"first".middle."last"@iana.org | invalid |
"first".last@iana.org | invalid |
first."last"@iana.org | invalid |
"first"."middle"."last"@iana.org | invalid |
"first.middle"."last"@iana.org | invalid |
"first.middle.last"@iana.org | invalid |
"first..last"@iana.org | invalid |
"first\\\"last"@iana.org | invalid |
first."mid\dle"."last"@iana.org | invalid |
"test blah"@iana.org |
invalid |
(foo)cal(bar)@(baz)iamcal.com(quux) | invalid |
cal@iamcal(woo).(yay)com | invalid |
cal(woo(yay)hoopla)@iamcal.com | invalid |
cal(foo\@bar)@iamcal.com | invalid |
cal(foo\)bar)@iamcal.com | invalid |
first().last@iana.org | invalid |
pete(his account)@silly.test(his host) | invalid |
c@(Chris's host.)public.example | invalid |
jdoe@machine(comment). example | invalid |
1234 @ local(blah) .machine .example | invalid |
first(abc.def).last@iana.org | invalid |
first(a"bc.def).last@iana.org | invalid |
first.(")middle.last(")@iana.org | invalid |
first(abc\(def)@iana.org | invalid |
first.last@x(1234567890123456789012345678901234567890123456789012345678901234567890).com | invalid |
a(a(b(c)d(e(f))g)h(i)j)@iana.org | invalid |
name.lastname@domain.com | valid |
a@b | invalid |
a@bar.com | valid |
aaa@[123.123.123.123] | invalid |
a@bar | invalid |
a-b@bar.com | valid |
+@b.c | invalid |
+@b.com | valid |
a@b.co-foo.uk | valid |
"hello my name is"@stutter.com | invalid |
"Test \"Fail\" Ing"@iana.org | invalid |
valid@about.museum | valid |
shaitan@my-domain.thisisminekthx | valid |
foobar@192.168.0.1 | valid |
"Joe\Blow"@iana.org | invalid |
HM2Kinsists@(that comments are allowed)this.is.ok | invalid |
user%uucp!path@berkeley.edu | valid |
first.last @iana.org | invalid |
cdburgess+!#$%&'*-/=?+_{}|~test@gmail.com | invalid |
first.last@[IPv6:::a2:a3:a4:b1:b2:b3:b4] | invalid |
first.last@[IPv6:a1:a2:a3:a4:b1:b2:b3::] | invalid |
first.last@[IPv6:::] | invalid |
first.last@[IPv6:::b4] | invalid |
first.last@[IPv6:::b3:b4] | invalid |
first.last@[IPv6:a1::b4] | invalid |
first.last@[IPv6:a1::] | invalid |
first.last@[IPv6:a1:a2::] | invalid |
first.last@[IPv6:0123:4567:89ab:cdef::] | invalid |
first.last@[IPv6:0123:4567:89ab:CDEF::] | invalid |
first.last@[IPv6:::a3:a4:b1:ffff:11.22.33.44] | invalid |
first.last@[IPv6:::a2:a3:a4:b1:ffff:11.22.33.44] | invalid |
first.last@[IPv6:a1:a2:a3:a4::11.22.33.44] | invalid |
first.last@[IPv6:a1:a2:a3:a4:b1::11.22.33.44] | invalid |
first.last@[IPv6:a1::11.22.33.44] | invalid |
first.last@[IPv6:a1:a2::11.22.33.44] | invalid |
first.last@[IPv6:0123:4567:89ab:cdef::11.22.33.44] | invalid |
first.last@[IPv6:0123:4567:89ab:CDEF::11.22.33.44] | invalid |
first.last@[IPv6:a1::b2:11.22.33.44] | invalid |
test@test.com | valid |
test@xn--example.com | valid |
test@example.com | valid |
These should be invalid | |
first.last@sub.do,com | invalid |
first\@last@iana.org | invalid |
123456789012345678901234567890123456789012345678901234567890@12345678901234567890123456789012345678901234 [...] | valid |
first.last | invalid |
12345678901234567890123456789012345678901234567890123456789012345@iana.org | valid |
.first.last@iana.org | invalid |
first.last.@iana.org | invalid |
first..last@iana.org | invalid |
"first"last"@iana.org | invalid |
"""@iana.org | invalid |
"\"@iana.org | invalid |
""@iana.org | invalid |
first\@last@iana.org | invalid |
first.last@ | invalid |
x@x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23 [...] | invalid |
first.last@[.12.34.56.78] | invalid |
first.last@[12.34.56.789] | invalid |
first.last@[::12.34.56.78] | invalid |
first.last@[IPv5:::12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:8888:9999] | invalid |
first.last@[IPv6:1111:2222::3333::4444:5555:6666] | invalid |
first.last@[IPv6:1111:2222:333x::4444:5555] | invalid |
first.last@[IPv6:1111:2222:33333::4444:5555] | invalid |
first.last@-xample.com | invalid |
first.last@exampl-.com | valid |
first.last@x234567890123456789012345678901234567890123456789012345678901234.iana.org | valid |
abc\@def@iana.org | invalid |
abc\@iana.org | invalid |
Doug\ \"Ace\"\ Lovell@iana.org | invalid |
abc@def@iana.org | invalid |
abc\@def@iana.org | invalid |
abc\@iana.org | invalid |
@iana.org | invalid |
doug@ | invalid |
"qu@iana.org | invalid |
ote"@iana.org | invalid |
.dot@iana.org | invalid |
dot.@iana.org | invalid |
two..dot@iana.org | invalid |
"Doug "Ace" L."@iana.org | invalid |
Doug\ \"Ace\"\ L\.@iana.org | invalid |
hello world@iana.org | invalid |
gatsby@f.sc.ot.t.f.i.tzg.era.l.d. | invalid |
test.iana.org | invalid |
test.@iana.org | invalid |
test..test@iana.org | invalid |
.test@iana.org | invalid |
test@test@iana.org | invalid |
test@@iana.org | invalid |
-- test --@iana.org | invalid |
[test]@iana.org | invalid |
"test"test"@iana.org | invalid |
()[]\;:,><@iana.org | invalid |
test@. | invalid |
test@example. | invalid |
test@.org | invalid |
test@1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 [...] | valid |
test@[123.123.123.123 | invalid |
test@123.123.123.123] | invalid |
NotAnEmail | invalid |
@NotAnEmail | invalid |
"test"blah"@iana.org | invalid |
.wooly@iana.org | invalid |
wo..oly@iana.org | invalid |
pootietang.@iana.org | invalid |
.@iana.org | invalid |
Ima Fool@iana.org | invalid |
phil.h\@\@ck@haacked.com | invalid |
foo@[\1.2.3.4] | invalid |
first."".last@iana.org | invalid |
first\last@iana.org | invalid |
Abc\@def@iana.org | invalid |
Fred\ Bloggs@iana.org | invalid |
Joe.\Blow@iana.org | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:12.34.567.89] | invalid |
{^c\@**Dog^}@cartoon.com | invalid |
"foo"(yay)@(hoopla)[1.2.3.4] | invalid |
cal(foo(bar)@iamcal.com | invalid |
cal(foo)bar)@iamcal.com | invalid |
cal(foo\)@iamcal.com | invalid |
first(12345678901234567890123456789012345678901234567890)last@(123456789012345678901234567890123456789012 [...] | invalid |
first(middle)last@iana.org | invalid |
first(abc("def".ghi).mno)middle(abc("def".ghi).mno).last@(abc("def".ghi).mno)example(abc("def".ghi).mno). [...] | invalid |
a(a(b(c)d(e(f))g)(h(i)j)@iana.org | invalid |
.@ | invalid |
@bar.com | invalid |
@@bar.com | invalid |
aaa.com | invalid |
aaa@.com | invalid |
aaa@.123 | invalid |
aaa@[123.123.123.123]a | invalid |
aaa@[123.123.123.333] | invalid |
a@bar.com. | invalid |
a@-b.com | invalid |
a@b-.com | valid |
-@..com | invalid |
-@a..com | invalid |
invalid@about.museum- | invalid |
test@...........com | invalid |
"Unicode NULL "@char.com | invalid |
Unicode NULL @char.com | invalid |
first.last@[IPv6::] | invalid |
first.last@[IPv6::::] | invalid |
first.last@[IPv6::b4] | invalid |
first.last@[IPv6::::b4] | invalid |
first.last@[IPv6::b3:b4] | invalid |
first.last@[IPv6::::b3:b4] | invalid |
first.last@[IPv6:a1:::b4] | invalid |
first.last@[IPv6:a1:] | invalid |
first.last@[IPv6:a1:::] | invalid |
first.last@[IPv6:a1:a2:] | invalid |
first.last@[IPv6:a1:a2:::] | invalid |
first.last@[IPv6::11.22.33.44] | invalid |
first.last@[IPv6::::11.22.33.44] | invalid |
first.last@[IPv6:a1:11.22.33.44] | invalid |
first.last@[IPv6:a1:::11.22.33.44] | invalid |
first.last@[IPv6:a1:a2:::11.22.33.44] | invalid |
first.last@[IPv6:0123:4567:89ab:cdef::11.22.33.xx] | invalid |
first.last@[IPv6:0123:4567:89ab:CDEFF::11.22.33.44] | invalid |
first.last@[IPv6:a1::a4:b1::b4:11.22.33.44] | invalid |
first.last@[IPv6:a1::11.22.33] | invalid |
first.last@[IPv6:a1::11.22.33.44.55] | invalid |
first.last@[IPv6:a1::b211.22.33.44] | invalid |
first.last@[IPv6:a1::b2::11.22.33.44] | invalid |
first.last@[IPv6:a1::b3:] | invalid |
first.last@[IPv6::a2::b4] | invalid |
first.last@[IPv6:a1:a2:a3:a4:b1:b2:b3:] | invalid |
first.last@[IPv6::a2:a3:a4:b1:b2:b3:b4] | invalid |
first.last@[IPv6:a1:a2:a3:a4::b1:b2:b3:b4] | invalid |
Valid: 39/134
Invalid: 126/132
^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$
http://www.quirksmode.org/js/mailcheck.html
Uses eregi()
These should be valid | |
first.last@iana.org | valid |
1234567890123456789012345678901234567890123456789012345678901234@iana.org | valid |
"first\"last"@iana.org | invalid |
"first@last"@iana.org | invalid |
"first\last"@iana.org | invalid |
x@x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23 [...] | valid |
1234567890123456789012345678901234567890123456789012345678@1234567890123456789012345678901234567890123456 [...] | valid |
first.last@[12.34.56.78] | invalid |
first.last@[IPv6:::12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333::4444:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:12.34.56.78] | invalid |
first.last@[IPv6:::1111:2222:3333:4444:5555:6666] | invalid |
first.last@[IPv6:1111:2222:3333::4444:5555:6666] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666::] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:8888] | invalid |
first.last@x23456789012345678901234567890123456789012345678901234567890123.iana.org | valid |
first.last@3com.com | valid |
first.last@123.iana.org | valid |
"first\last"@iana.org | invalid |
first.last@[IPv6:1111:2222:3333::4444:5555:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333::4444:5555:6666:7777] | invalid |
first.last@example.123 | valid |
first.last@com | invalid |
"Abc\@def"@iana.org | invalid |
"Fred\ Bloggs"@iana.org | invalid |
"Joe.\Blow"@iana.org | invalid |
"Abc@def"@iana.org | invalid |
"Fred Bloggs"@iana.org | invalid |
user+mailbox@iana.org | invalid |
customer/department=shipping@iana.org | invalid |
$A12345@iana.org | invalid |
!def!xyz%abc@iana.org | invalid |
_somename@iana.org | valid |
dclo@us.ibm.com | valid |
peter.piper@iana.org | valid |
"Doug \"Ace\" L."@iana.org | invalid |
test@iana.org | valid |
TEST@iana.org | valid |
1234567890@iana.org | valid |
test+test@iana.org | invalid |
test-test@iana.org | valid |
t*est@iana.org | invalid |
+1~1+@iana.org | invalid |
{_test_}@iana.org | invalid |
"[[ test ]]"@iana.org | invalid |
test.test@iana.org | valid |
"test.test"@iana.org | invalid |
test."test"@iana.org | invalid |
"test@test"@iana.org | invalid |
test@123.123.123.x123 | valid |
test@123.123.123.123 | valid |
test@[123.123.123.123] | invalid |
test@example.iana.org | valid |
test@example.example.iana.org | valid |
"test\test"@iana.org | invalid |
test@example | invalid |
"test\blah"@iana.org | invalid |
"test\blah"@iana.org | invalid |
"test\"blah"@iana.org | invalid |
customer/department@iana.org | invalid |
_Yosemite.Sam@iana.org | valid |
~@iana.org | invalid |
"Austin@Powers"@iana.org | invalid |
Ima.Fool@iana.org | valid |
"Ima.Fool"@iana.org | invalid |
"Ima Fool"@iana.org | invalid |
"first"."last"@iana.org | invalid |
"first".middle."last"@iana.org | invalid |
"first".last@iana.org | invalid |
first."last"@iana.org | invalid |
"first"."middle"."last"@iana.org | invalid |
"first.middle"."last"@iana.org | invalid |
"first.middle.last"@iana.org | invalid |
"first..last"@iana.org | invalid |
"first\\\"last"@iana.org | invalid |
first."mid\dle"."last"@iana.org | invalid |
"test blah"@iana.org |
invalid |
(foo)cal(bar)@(baz)iamcal.com(quux) | invalid |
cal@iamcal(woo).(yay)com | invalid |
cal(woo(yay)hoopla)@iamcal.com | invalid |
cal(foo\@bar)@iamcal.com | invalid |
cal(foo\)bar)@iamcal.com | invalid |
first().last@iana.org | invalid |
pete(his account)@silly.test(his host) | invalid |
c@(Chris's host.)public.example | invalid |
jdoe@machine(comment). example | invalid |
1234 @ local(blah) .machine .example | invalid |
first(abc.def).last@iana.org | invalid |
first(a"bc.def).last@iana.org | invalid |
first.(")middle.last(")@iana.org | invalid |
first(abc\(def)@iana.org | invalid |
first.last@x(1234567890123456789012345678901234567890123456789012345678901234567890).com | invalid |
a(a(b(c)d(e(f))g)h(i)j)@iana.org | invalid |
name.lastname@domain.com | valid |
a@b | invalid |
a@bar.com | valid |
aaa@[123.123.123.123] | invalid |
a@bar | invalid |
a-b@bar.com | valid |
+@b.c | invalid |
+@b.com | invalid |
a@b.co-foo.uk | valid |
"hello my name is"@stutter.com | invalid |
"Test \"Fail\" Ing"@iana.org | invalid |
valid@about.museum | valid |
shaitan@my-domain.thisisminekthx | valid |
foobar@192.168.0.1 | invalid |
"Joe\Blow"@iana.org | invalid |
HM2Kinsists@(that comments are allowed)this.is.ok | invalid |
user%uucp!path@berkeley.edu | invalid |
first.last @iana.org | invalid |
cdburgess+!#$%&'*-/=?+_{}|~test@gmail.com | invalid |
first.last@[IPv6:::a2:a3:a4:b1:b2:b3:b4] | invalid |
first.last@[IPv6:a1:a2:a3:a4:b1:b2:b3::] | invalid |
first.last@[IPv6:::] | invalid |
first.last@[IPv6:::b4] | invalid |
first.last@[IPv6:::b3:b4] | invalid |
first.last@[IPv6:a1::b4] | invalid |
first.last@[IPv6:a1::] | invalid |
first.last@[IPv6:a1:a2::] | invalid |
first.last@[IPv6:0123:4567:89ab:cdef::] | invalid |
first.last@[IPv6:0123:4567:89ab:CDEF::] | invalid |
first.last@[IPv6:::a3:a4:b1:ffff:11.22.33.44] | invalid |
first.last@[IPv6:::a2:a3:a4:b1:ffff:11.22.33.44] | invalid |
first.last@[IPv6:a1:a2:a3:a4::11.22.33.44] | invalid |
first.last@[IPv6:a1:a2:a3:a4:b1::11.22.33.44] | invalid |
first.last@[IPv6:a1::11.22.33.44] | invalid |
first.last@[IPv6:a1:a2::11.22.33.44] | invalid |
first.last@[IPv6:0123:4567:89ab:cdef::11.22.33.44] | invalid |
first.last@[IPv6:0123:4567:89ab:CDEF::11.22.33.44] | invalid |
first.last@[IPv6:a1::b2:11.22.33.44] | invalid |
test@test.com | valid |
test@xn--example.com | valid |
test@example.com | valid |
These should be invalid | |
first.last@sub.do,com | invalid |
first\@last@iana.org | invalid |
123456789012345678901234567890123456789012345678901234567890@12345678901234567890123456789012345678901234 [...] | valid |
first.last | invalid |
12345678901234567890123456789012345678901234567890123456789012345@iana.org | valid |
.first.last@iana.org | valid |
first.last.@iana.org | valid |
first..last@iana.org | valid |
"first"last"@iana.org | invalid |
"""@iana.org | invalid |
"\"@iana.org | invalid |
""@iana.org | invalid |
first\@last@iana.org | invalid |
first.last@ | invalid |
x@x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23 [...] | valid |
first.last@[.12.34.56.78] | invalid |
first.last@[12.34.56.789] | invalid |
first.last@[::12.34.56.78] | invalid |
first.last@[IPv5:::12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:8888:9999] | invalid |
first.last@[IPv6:1111:2222::3333::4444:5555:6666] | invalid |
first.last@[IPv6:1111:2222:333x::4444:5555] | invalid |
first.last@[IPv6:1111:2222:33333::4444:5555] | invalid |
first.last@-xample.com | valid |
first.last@exampl-.com | valid |
first.last@x234567890123456789012345678901234567890123456789012345678901234.iana.org | valid |
abc\@def@iana.org | invalid |
abc\@iana.org | valid |
Doug\ \"Ace\"\ Lovell@iana.org | invalid |
abc@def@iana.org | invalid |
abc\@def@iana.org | invalid |
abc\@iana.org | valid |
@iana.org | invalid |
doug@ | invalid |
"qu@iana.org | invalid |
ote"@iana.org | invalid |
.dot@iana.org | valid |
dot.@iana.org | valid |
two..dot@iana.org | valid |
"Doug "Ace" L."@iana.org | invalid |
Doug\ \"Ace\"\ L\.@iana.org | invalid |
hello world@iana.org | invalid |
gatsby@f.sc.ot.t.f.i.tzg.era.l.d. | invalid |
test.iana.org | invalid |
test.@iana.org | valid |
test..test@iana.org | valid |
.test@iana.org | valid |
test@test@iana.org | invalid |
test@@iana.org | invalid |
-- test --@iana.org | invalid |
[test]@iana.org | invalid |
"test"test"@iana.org | invalid |
()[]\;:,><@iana.org | invalid |
test@. | invalid |
test@example. | invalid |
test@.org | invalid |
test@1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 [...] | valid |
test@[123.123.123.123 | invalid |
test@123.123.123.123] | invalid |
NotAnEmail | invalid |
@NotAnEmail | invalid |
"test"blah"@iana.org | invalid |
.wooly@iana.org | valid |
wo..oly@iana.org | valid |
pootietang.@iana.org | valid |
.@iana.org | valid |
Ima Fool@iana.org | invalid |
phil.h\@\@ck@haacked.com | invalid |
foo@[\1.2.3.4] | invalid |
first."".last@iana.org | invalid |
first\last@iana.org | valid |
Abc\@def@iana.org | invalid |
Fred\ Bloggs@iana.org | invalid |
Joe.\Blow@iana.org | valid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:12.34.567.89] | invalid |
{^c\@**Dog^}@cartoon.com | invalid |
"foo"(yay)@(hoopla)[1.2.3.4] | invalid |
cal(foo(bar)@iamcal.com | invalid |
cal(foo)bar)@iamcal.com | invalid |
cal(foo\)@iamcal.com | invalid |
first(12345678901234567890123456789012345678901234567890)last@(123456789012345678901234567890123456789012 [...] | invalid |
first(middle)last@iana.org | invalid |
first(abc("def".ghi).mno)middle(abc("def".ghi).mno).last@(abc("def".ghi).mno)example(abc("def".ghi).mno). [...] | invalid |
a(a(b(c)d(e(f))g)(h(i)j)@iana.org | invalid |
.@ | invalid |
@bar.com | invalid |
@@bar.com | invalid |
aaa.com | invalid |
aaa@.com | invalid |
aaa@.123 | invalid |
aaa@[123.123.123.123]a | invalid |
aaa@[123.123.123.333] | invalid |
a@bar.com. | invalid |
a@-b.com | valid |
a@b-.com | valid |
-@..com | invalid |
-@a..com | invalid |
invalid@about.museum- | invalid |
test@...........com | invalid |
"Unicode NULL "@char.com | invalid |
Unicode NULL @char.com | invalid |
first.last@[IPv6::] | invalid |
first.last@[IPv6::::] | invalid |
first.last@[IPv6::b4] | invalid |
first.last@[IPv6::::b4] | invalid |
first.last@[IPv6::b3:b4] | invalid |
first.last@[IPv6::::b3:b4] | invalid |
first.last@[IPv6:a1:::b4] | invalid |
first.last@[IPv6:a1:] | invalid |
first.last@[IPv6:a1:::] | invalid |
first.last@[IPv6:a1:a2:] | invalid |
first.last@[IPv6:a1:a2:::] | invalid |
first.last@[IPv6::11.22.33.44] | invalid |
first.last@[IPv6::::11.22.33.44] | invalid |
first.last@[IPv6:a1:11.22.33.44] | invalid |
first.last@[IPv6:a1:::11.22.33.44] | invalid |
first.last@[IPv6:a1:a2:::11.22.33.44] | invalid |
first.last@[IPv6:0123:4567:89ab:cdef::11.22.33.xx] | invalid |
first.last@[IPv6:0123:4567:89ab:CDEFF::11.22.33.44] | invalid |
first.last@[IPv6:a1::a4:b1::b4:11.22.33.44] | invalid |
first.last@[IPv6:a1::11.22.33] | invalid |
first.last@[IPv6:a1::11.22.33.44.55] | invalid |
first.last@[IPv6:a1::b211.22.33.44] | invalid |
first.last@[IPv6:a1::b2::11.22.33.44] | invalid |
first.last@[IPv6:a1::b3:] | invalid |
first.last@[IPv6::a2::b4] | invalid |
first.last@[IPv6:a1:a2:a3:a4:b1:b2:b3:] | invalid |
first.last@[IPv6::a2:a3:a4:b1:b2:b3:b4] | invalid |
first.last@[IPv6:a1:a2:a3:a4::b1:b2:b3:b4] | invalid |
Valid: 31/134
Invalid: 106/132
^[a-z0-9\._-]+@([a-z0-9][a-z0-9-]*[a-z0-9]\.)+([a-z]+\.)?([a-z]+)$
http://www.zend.com/zend/spotlight/code-gallery-wade5.php?article=code-gallery-wade5&kind=sl&id=1988&open=1&anc=0&view=1#Heading10
Uses eregi()
These should be valid | |
first.last@iana.org | valid |
1234567890123456789012345678901234567890123456789012345678901234@iana.org | valid |
"first\"last"@iana.org | invalid |
"first@last"@iana.org | invalid |
"first\last"@iana.org | invalid |
x@x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23 [...] | invalid |
1234567890123456789012345678901234567890123456789012345678@1234567890123456789012345678901234567890123456 [...] | valid |
first.last@[12.34.56.78] | invalid |
first.last@[IPv6:::12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333::4444:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:12.34.56.78] | invalid |
first.last@[IPv6:::1111:2222:3333:4444:5555:6666] | invalid |
first.last@[IPv6:1111:2222:3333::4444:5555:6666] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666::] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:8888] | invalid |
first.last@x23456789012345678901234567890123456789012345678901234567890123.iana.org | valid |
first.last@3com.com | valid |
first.last@123.iana.org | valid |
"first\last"@iana.org | invalid |
first.last@[IPv6:1111:2222:3333::4444:5555:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333::4444:5555:6666:7777] | invalid |
first.last@example.123 | invalid |
first.last@com | invalid |
"Abc\@def"@iana.org | invalid |
"Fred\ Bloggs"@iana.org | invalid |
"Joe.\Blow"@iana.org | invalid |
"Abc@def"@iana.org | invalid |
"Fred Bloggs"@iana.org | invalid |
user+mailbox@iana.org | invalid |
customer/department=shipping@iana.org | invalid |
$A12345@iana.org | invalid |
!def!xyz%abc@iana.org | invalid |
_somename@iana.org | valid |
dclo@us.ibm.com | valid |
peter.piper@iana.org | valid |
"Doug \"Ace\" L."@iana.org | invalid |
test@iana.org | valid |
TEST@iana.org | valid |
1234567890@iana.org | valid |
test+test@iana.org | invalid |
test-test@iana.org | valid |
t*est@iana.org | invalid |
+1~1+@iana.org | invalid |
{_test_}@iana.org | invalid |
"[[ test ]]"@iana.org | invalid |
test.test@iana.org | valid |
"test.test"@iana.org | invalid |
test."test"@iana.org | invalid |
"test@test"@iana.org | invalid |
test@123.123.123.x123 | invalid |
test@123.123.123.123 | invalid |
test@[123.123.123.123] | invalid |
test@example.iana.org | valid |
test@example.example.iana.org | valid |
"test\test"@iana.org | invalid |
test@example | invalid |
"test\blah"@iana.org | invalid |
"test\blah"@iana.org | invalid |
"test\"blah"@iana.org | invalid |
customer/department@iana.org | invalid |
_Yosemite.Sam@iana.org | valid |
~@iana.org | invalid |
"Austin@Powers"@iana.org | invalid |
Ima.Fool@iana.org | valid |
"Ima.Fool"@iana.org | invalid |
"Ima Fool"@iana.org | invalid |
"first"."last"@iana.org | invalid |
"first".middle."last"@iana.org | invalid |
"first".last@iana.org | invalid |
first."last"@iana.org | invalid |
"first"."middle"."last"@iana.org | invalid |
"first.middle"."last"@iana.org | invalid |
"first.middle.last"@iana.org | invalid |
"first..last"@iana.org | invalid |
"first\\\"last"@iana.org | invalid |
first."mid\dle"."last"@iana.org | invalid |
"test blah"@iana.org |
invalid |
(foo)cal(bar)@(baz)iamcal.com(quux) | invalid |
cal@iamcal(woo).(yay)com | invalid |
cal(woo(yay)hoopla)@iamcal.com | invalid |
cal(foo\@bar)@iamcal.com | invalid |
cal(foo\)bar)@iamcal.com | invalid |
first().last@iana.org | invalid |
pete(his account)@silly.test(his host) | invalid |
c@(Chris's host.)public.example | invalid |
jdoe@machine(comment). example | invalid |
1234 @ local(blah) .machine .example | invalid |
first(abc.def).last@iana.org | invalid |
first(a"bc.def).last@iana.org | invalid |
first.(")middle.last(")@iana.org | invalid |
first(abc\(def)@iana.org | invalid |
first.last@x(1234567890123456789012345678901234567890123456789012345678901234567890).com | invalid |
a(a(b(c)d(e(f))g)h(i)j)@iana.org | invalid |
name.lastname@domain.com | valid |
a@b | invalid |
a@bar.com | valid |
aaa@[123.123.123.123] | invalid |
a@bar | invalid |
a-b@bar.com | valid |
+@b.c | invalid |
+@b.com | invalid |
a@b.co-foo.uk | invalid |
"hello my name is"@stutter.com | invalid |
"Test \"Fail\" Ing"@iana.org | invalid |
valid@about.museum | valid |
shaitan@my-domain.thisisminekthx | valid |
foobar@192.168.0.1 | invalid |
"Joe\Blow"@iana.org | invalid |
HM2Kinsists@(that comments are allowed)this.is.ok | invalid |
user%uucp!path@berkeley.edu | invalid |
first.last @iana.org | invalid |
cdburgess+!#$%&'*-/=?+_{}|~test@gmail.com | invalid |
first.last@[IPv6:::a2:a3:a4:b1:b2:b3:b4] | invalid |
first.last@[IPv6:a1:a2:a3:a4:b1:b2:b3::] | invalid |
first.last@[IPv6:::] | invalid |
first.last@[IPv6:::b4] | invalid |
first.last@[IPv6:::b3:b4] | invalid |
first.last@[IPv6:a1::b4] | invalid |
first.last@[IPv6:a1::] | invalid |
first.last@[IPv6:a1:a2::] | invalid |
first.last@[IPv6:0123:4567:89ab:cdef::] | invalid |
first.last@[IPv6:0123:4567:89ab:CDEF::] | invalid |
first.last@[IPv6:::a3:a4:b1:ffff:11.22.33.44] | invalid |
first.last@[IPv6:::a2:a3:a4:b1:ffff:11.22.33.44] | invalid |
first.last@[IPv6:a1:a2:a3:a4::11.22.33.44] | invalid |
first.last@[IPv6:a1:a2:a3:a4:b1::11.22.33.44] | invalid |
first.last@[IPv6:a1::11.22.33.44] | invalid |
first.last@[IPv6:a1:a2::11.22.33.44] | invalid |
first.last@[IPv6:0123:4567:89ab:cdef::11.22.33.44] | invalid |
first.last@[IPv6:0123:4567:89ab:CDEF::11.22.33.44] | invalid |
first.last@[IPv6:a1::b2:11.22.33.44] | invalid |
test@test.com | valid |
test@xn--example.com | valid |
test@example.com | valid |
These should be invalid | |
first.last@sub.do,com | invalid |
first\@last@iana.org | invalid |
123456789012345678901234567890123456789012345678901234567890@12345678901234567890123456789012345678901234 [...] | valid |
first.last | invalid |
12345678901234567890123456789012345678901234567890123456789012345@iana.org | valid |
.first.last@iana.org | valid |
first.last.@iana.org | valid |
first..last@iana.org | valid |
"first"last"@iana.org | invalid |
"""@iana.org | invalid |
"\"@iana.org | invalid |
""@iana.org | invalid |
first\@last@iana.org | invalid |
first.last@ | invalid |
x@x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23 [...] | invalid |
first.last@[.12.34.56.78] | invalid |
first.last@[12.34.56.789] | invalid |
first.last@[::12.34.56.78] | invalid |
first.last@[IPv5:::12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:8888:9999] | invalid |
first.last@[IPv6:1111:2222::3333::4444:5555:6666] | invalid |
first.last@[IPv6:1111:2222:333x::4444:5555] | invalid |
first.last@[IPv6:1111:2222:33333::4444:5555] | invalid |
first.last@-xample.com | invalid |
first.last@exampl-.com | invalid |
first.last@x234567890123456789012345678901234567890123456789012345678901234.iana.org | valid |
abc\@def@iana.org | invalid |
abc\@iana.org | valid |
Doug\ \"Ace\"\ Lovell@iana.org | invalid |
abc@def@iana.org | invalid |
abc\@def@iana.org | invalid |
abc\@iana.org | valid |
@iana.org | invalid |
doug@ | invalid |
"qu@iana.org | invalid |
ote"@iana.org | invalid |
.dot@iana.org | valid |
dot.@iana.org | valid |
two..dot@iana.org | valid |
"Doug "Ace" L."@iana.org | invalid |
Doug\ \"Ace\"\ L\.@iana.org | invalid |
hello world@iana.org | invalid |
gatsby@f.sc.ot.t.f.i.tzg.era.l.d. | invalid |
test.iana.org | invalid |
test.@iana.org | valid |
test..test@iana.org | valid |
.test@iana.org | valid |
test@test@iana.org | invalid |
test@@iana.org | invalid |
-- test --@iana.org | invalid |
[test]@iana.org | invalid |
"test"test"@iana.org | invalid |
()[]\;:,><@iana.org | invalid |
test@. | invalid |
test@example. | invalid |
test@.org | invalid |
test@1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 [...] | valid |
test@[123.123.123.123 | invalid |
test@123.123.123.123] | invalid |
NotAnEmail | invalid |
@NotAnEmail | invalid |
"test"blah"@iana.org | invalid |
.wooly@iana.org | valid |
wo..oly@iana.org | valid |
pootietang.@iana.org | valid |
.@iana.org | valid |
Ima Fool@iana.org | invalid |
phil.h\@\@ck@haacked.com | invalid |
foo@[\1.2.3.4] | invalid |
first."".last@iana.org | invalid |
first\last@iana.org | valid |
Abc\@def@iana.org | invalid |
Fred\ Bloggs@iana.org | invalid |
Joe.\Blow@iana.org | valid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:12.34.567.89] | invalid |
{^c\@**Dog^}@cartoon.com | invalid |
"foo"(yay)@(hoopla)[1.2.3.4] | invalid |
cal(foo(bar)@iamcal.com | invalid |
cal(foo)bar)@iamcal.com | invalid |
cal(foo\)@iamcal.com | invalid |
first(12345678901234567890123456789012345678901234567890)last@(123456789012345678901234567890123456789012 [...] | invalid |
first(middle)last@iana.org | invalid |
first(abc("def".ghi).mno)middle(abc("def".ghi).mno).last@(abc("def".ghi).mno)example(abc("def".ghi).mno). [...] | invalid |
a(a(b(c)d(e(f))g)(h(i)j)@iana.org | invalid |
.@ | invalid |
@bar.com | invalid |
@@bar.com | invalid |
aaa.com | invalid |
aaa@.com | invalid |
aaa@.123 | invalid |
aaa@[123.123.123.123]a | invalid |
aaa@[123.123.123.333] | invalid |
a@bar.com. | invalid |
a@-b.com | invalid |
a@b-.com | invalid |
-@..com | invalid |
-@a..com | invalid |
invalid@about.museum- | invalid |
test@...........com | invalid |
"Unicode NULL "@char.com | invalid |
Unicode NULL @char.com | invalid |
first.last@[IPv6::] | invalid |
first.last@[IPv6::::] | invalid |
first.last@[IPv6::b4] | invalid |
first.last@[IPv6::::b4] | invalid |
first.last@[IPv6::b3:b4] | invalid |
first.last@[IPv6::::b3:b4] | invalid |
first.last@[IPv6:a1:::b4] | invalid |
first.last@[IPv6:a1:] | invalid |
first.last@[IPv6:a1:::] | invalid |
first.last@[IPv6:a1:a2:] | invalid |
first.last@[IPv6:a1:a2:::] | invalid |
first.last@[IPv6::11.22.33.44] | invalid |
first.last@[IPv6::::11.22.33.44] | invalid |
first.last@[IPv6:a1:11.22.33.44] | invalid |
first.last@[IPv6:a1:::11.22.33.44] | invalid |
first.last@[IPv6:a1:a2:::11.22.33.44] | invalid |
first.last@[IPv6:0123:4567:89ab:cdef::11.22.33.xx] | invalid |
first.last@[IPv6:0123:4567:89ab:CDEFF::11.22.33.44] | invalid |
first.last@[IPv6:a1::a4:b1::b4:11.22.33.44] | invalid |
first.last@[IPv6:a1::11.22.33] | invalid |
first.last@[IPv6:a1::11.22.33.44.55] | invalid |
first.last@[IPv6:a1::b211.22.33.44] | invalid |
first.last@[IPv6:a1::b2::11.22.33.44] | invalid |
first.last@[IPv6:a1::b3:] | invalid |
first.last@[IPv6::a2::b4] | invalid |
first.last@[IPv6:a1:a2:a3:a4:b1:b2:b3:] | invalid |
first.last@[IPv6::a2:a3:a4:b1:b2:b3:b4] | invalid |
first.last@[IPv6:a1:a2:a3:a4::b1:b2:b3:b4] | invalid |
Valid: 26/134
Invalid: 111/132
^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$
http://www.regular-expressions.info/email.html
Uses eregi()
These should be valid | |
first.last@iana.org | valid |
1234567890123456789012345678901234567890123456789012345678901234@iana.org | valid |
"first\"last"@iana.org | invalid |
"first@last"@iana.org | invalid |
"first\last"@iana.org | invalid |
x@x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23 [...] | invalid |
1234567890123456789012345678901234567890123456789012345678@1234567890123456789012345678901234567890123456 [...] | valid |
first.last@[12.34.56.78] | invalid |
first.last@[IPv6:::12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333::4444:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:12.34.56.78] | invalid |
first.last@[IPv6:::1111:2222:3333:4444:5555:6666] | invalid |
first.last@[IPv6:1111:2222:3333::4444:5555:6666] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666::] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:8888] | invalid |
first.last@x23456789012345678901234567890123456789012345678901234567890123.iana.org | valid |
first.last@3com.com | valid |
first.last@123.iana.org | valid |
"first\last"@iana.org | invalid |
first.last@[IPv6:1111:2222:3333::4444:5555:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333::4444:5555:6666:7777] | invalid |
first.last@example.123 | invalid |
first.last@com | invalid |
"Abc\@def"@iana.org | invalid |
"Fred\ Bloggs"@iana.org | invalid |
"Joe.\Blow"@iana.org | invalid |
"Abc@def"@iana.org | invalid |
"Fred Bloggs"@iana.org | invalid |
user+mailbox@iana.org | invalid |
customer/department=shipping@iana.org | invalid |
$A12345@iana.org | invalid |
!def!xyz%abc@iana.org | invalid |
_somename@iana.org | valid |
dclo@us.ibm.com | valid |
peter.piper@iana.org | valid |
"Doug \"Ace\" L."@iana.org | invalid |
test@iana.org | valid |
TEST@iana.org | valid |
1234567890@iana.org | valid |
test+test@iana.org | invalid |
test-test@iana.org | valid |
t*est@iana.org | invalid |
+1~1+@iana.org | invalid |
{_test_}@iana.org | invalid |
"[[ test ]]"@iana.org | invalid |
test.test@iana.org | valid |
"test.test"@iana.org | invalid |
test."test"@iana.org | invalid |
"test@test"@iana.org | invalid |
test@123.123.123.x123 | invalid |
test@123.123.123.123 | invalid |
test@[123.123.123.123] | invalid |
test@example.iana.org | valid |
test@example.example.iana.org | valid |
"test\test"@iana.org | invalid |
test@example | invalid |
"test\blah"@iana.org | invalid |
"test\blah"@iana.org | invalid |
"test\"blah"@iana.org | invalid |
customer/department@iana.org | invalid |
_Yosemite.Sam@iana.org | valid |
~@iana.org | invalid |
"Austin@Powers"@iana.org | invalid |
Ima.Fool@iana.org | valid |
"Ima.Fool"@iana.org | invalid |
"Ima Fool"@iana.org | invalid |
"first"."last"@iana.org | invalid |
"first".middle."last"@iana.org | invalid |
"first".last@iana.org | invalid |
first."last"@iana.org | invalid |
"first"."middle"."last"@iana.org | invalid |
"first.middle"."last"@iana.org | invalid |
"first.middle.last"@iana.org | invalid |
"first..last"@iana.org | invalid |
"first\\\"last"@iana.org | invalid |
first."mid\dle"."last"@iana.org | invalid |
"test blah"@iana.org |
invalid |
(foo)cal(bar)@(baz)iamcal.com(quux) | invalid |
cal@iamcal(woo).(yay)com | invalid |
cal(woo(yay)hoopla)@iamcal.com | invalid |
cal(foo\@bar)@iamcal.com | invalid |
cal(foo\)bar)@iamcal.com | invalid |
first().last@iana.org | invalid |
pete(his account)@silly.test(his host) | invalid |
c@(Chris's host.)public.example | invalid |
jdoe@machine(comment). example | invalid |
1234 @ local(blah) .machine .example | invalid |
first(abc.def).last@iana.org | invalid |
first(a"bc.def).last@iana.org | invalid |
first.(")middle.last(")@iana.org | invalid |
first(abc\(def)@iana.org | invalid |
first.last@x(1234567890123456789012345678901234567890123456789012345678901234567890).com | invalid |
a(a(b(c)d(e(f))g)h(i)j)@iana.org | invalid |
name.lastname@domain.com | valid |
a@b | invalid |
a@bar.com | valid |
aaa@[123.123.123.123] | invalid |
a@bar | invalid |
a-b@bar.com | valid |
+@b.c | invalid |
+@b.com | invalid |
a@b.co-foo.uk | valid |
"hello my name is"@stutter.com | invalid |
"Test \"Fail\" Ing"@iana.org | invalid |
valid@about.museum | invalid |
shaitan@my-domain.thisisminekthx | invalid |
foobar@192.168.0.1 | invalid |
"Joe\Blow"@iana.org | invalid |
HM2Kinsists@(that comments are allowed)this.is.ok | invalid |
user%uucp!path@berkeley.edu | invalid |
first.last @iana.org | invalid |
cdburgess+!#$%&'*-/=?+_{}|~test@gmail.com | invalid |
first.last@[IPv6:::a2:a3:a4:b1:b2:b3:b4] | invalid |
first.last@[IPv6:a1:a2:a3:a4:b1:b2:b3::] | invalid |
first.last@[IPv6:::] | invalid |
first.last@[IPv6:::b4] | invalid |
first.last@[IPv6:::b3:b4] | invalid |
first.last@[IPv6:a1::b4] | invalid |
first.last@[IPv6:a1::] | invalid |
first.last@[IPv6:a1:a2::] | invalid |
first.last@[IPv6:0123:4567:89ab:cdef::] | invalid |
first.last@[IPv6:0123:4567:89ab:CDEF::] | invalid |
first.last@[IPv6:::a3:a4:b1:ffff:11.22.33.44] | invalid |
first.last@[IPv6:::a2:a3:a4:b1:ffff:11.22.33.44] | invalid |
first.last@[IPv6:a1:a2:a3:a4::11.22.33.44] | invalid |
first.last@[IPv6:a1:a2:a3:a4:b1::11.22.33.44] | invalid |
first.last@[IPv6:a1::11.22.33.44] | invalid |
first.last@[IPv6:a1:a2::11.22.33.44] | invalid |
first.last@[IPv6:0123:4567:89ab:cdef::11.22.33.44] | invalid |
first.last@[IPv6:0123:4567:89ab:CDEF::11.22.33.44] | invalid |
first.last@[IPv6:a1::b2:11.22.33.44] | invalid |
test@test.com | valid |
test@xn--example.com | valid |
test@example.com | valid |
These should be invalid | |
first.last@sub.do,com | invalid |
first\@last@iana.org | invalid |
123456789012345678901234567890123456789012345678901234567890@12345678901234567890123456789012345678901234 [...] | valid |
first.last | invalid |
12345678901234567890123456789012345678901234567890123456789012345@iana.org | valid |
.first.last@iana.org | valid |
first.last.@iana.org | valid |
first..last@iana.org | valid |
"first"last"@iana.org | invalid |
"""@iana.org | invalid |
"\"@iana.org | invalid |
""@iana.org | invalid |
first\@last@iana.org | invalid |
first.last@ | invalid |
x@x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23 [...] | invalid |
first.last@[.12.34.56.78] | invalid |
first.last@[12.34.56.789] | invalid |
first.last@[::12.34.56.78] | invalid |
first.last@[IPv5:::12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:12.34.56.78] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777] | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:7777:8888:9999] | invalid |
first.last@[IPv6:1111:2222::3333::4444:5555:6666] | invalid |
first.last@[IPv6:1111:2222:333x::4444:5555] | invalid |
first.last@[IPv6:1111:2222:33333::4444:5555] | invalid |
first.last@-xample.com | valid |
first.last@exampl-.com | valid |
first.last@x234567890123456789012345678901234567890123456789012345678901234.iana.org | valid |
abc\@def@iana.org | invalid |
abc\@iana.org | invalid |
Doug\ \"Ace\"\ Lovell@iana.org | invalid |
abc@def@iana.org | invalid |
abc\@def@iana.org | invalid |
abc\@iana.org | invalid |
@iana.org | invalid |
doug@ | invalid |
"qu@iana.org | invalid |
ote"@iana.org | invalid |
.dot@iana.org | valid |
dot.@iana.org | valid |
two..dot@iana.org | valid |
"Doug "Ace" L."@iana.org | invalid |
Doug\ \"Ace\"\ L\.@iana.org | invalid |
hello world@iana.org | invalid |
gatsby@f.sc.ot.t.f.i.tzg.era.l.d. | invalid |
test.iana.org | invalid |
test.@iana.org | valid |
test..test@iana.org | valid |
.test@iana.org | valid |
test@test@iana.org | invalid |
test@@iana.org | invalid |
-- test --@iana.org | invalid |
[test]@iana.org | invalid |
"test"test"@iana.org | invalid |
()[]\;:,><@iana.org | invalid |
test@. | invalid |
test@example. | invalid |
test@.org | invalid |
test@1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 [...] | valid |
test@[123.123.123.123 | invalid |
test@123.123.123.123] | invalid |
NotAnEmail | invalid |
@NotAnEmail | invalid |
"test"blah"@iana.org | invalid |
.wooly@iana.org | valid |
wo..oly@iana.org | valid |
pootietang.@iana.org | valid |
.@iana.org | valid |
Ima Fool@iana.org | invalid |
phil.h\@\@ck@haacked.com | invalid |
foo@[\1.2.3.4] | invalid |
first."".last@iana.org | invalid |
first\last@iana.org | invalid |
Abc\@def@iana.org | invalid |
Fred\ Bloggs@iana.org | invalid |
Joe.\Blow@iana.org | invalid |
first.last@[IPv6:1111:2222:3333:4444:5555:6666:12.34.567.89] | invalid |
{^c\@**Dog^}@cartoon.com | invalid |
"foo"(yay)@(hoopla)[1.2.3.4] | invalid |
cal(foo(bar)@iamcal.com | invalid |
cal(foo)bar)@iamcal.com | invalid |
cal(foo\)@iamcal.com | invalid |
first(12345678901234567890123456789012345678901234567890)last@(123456789012345678901234567890123456789012 [...] | invalid |
first(middle)last@iana.org | invalid |
first(abc("def".ghi).mno)middle(abc("def".ghi).mno).last@(abc("def".ghi).mno)example(abc("def".ghi).mno). [...] | invalid |
a(a(b(c)d(e(f))g)(h(i)j)@iana.org | invalid |
.@ | invalid |
@bar.com | invalid |
@@bar.com | invalid |
aaa.com | invalid |
aaa@.com | invalid |
aaa@.123 | invalid |
aaa@[123.123.123.123]a | invalid |
aaa@[123.123.123.333] | invalid |
a@bar.com. | invalid |
a@-b.com | valid |
a@b-.com | valid |
-@..com | valid |
-@a..com | valid |
invalid@about.museum- | invalid |
test@...........com | valid |
"Unicode NULL "@char.com | invalid |
Unicode NULL @char.com | invalid |
first.last@[IPv6::] | invalid |
first.last@[IPv6::::] | invalid |
first.last@[IPv6::b4] | invalid |
first.last@[IPv6::::b4] | invalid |
first.last@[IPv6::b3:b4] | invalid |
first.last@[IPv6::::b3:b4] | invalid |
first.last@[IPv6:a1:::b4] | invalid |
first.last@[IPv6:a1:] | invalid |
first.last@[IPv6:a1:::] | invalid |
first.last@[IPv6:a1:a2:] | invalid |
first.last@[IPv6:a1:a2:::] | invalid |
first.last@[IPv6::11.22.33.44] | invalid |
first.last@[IPv6::::11.22.33.44] | invalid |
first.last@[IPv6:a1:11.22.33.44] | invalid |
first.last@[IPv6:a1:::11.22.33.44] | invalid |
first.last@[IPv6:a1:a2:::11.22.33.44] | invalid |
first.last@[IPv6:0123:4567:89ab:cdef::11.22.33.xx] | invalid |
first.last@[IPv6:0123:4567:89ab:CDEFF::11.22.33.44] | invalid |
first.last@[IPv6:a1::a4:b1::b4:11.22.33.44] | invalid |
first.last@[IPv6:a1::11.22.33] | invalid |
first.last@[IPv6:a1::11.22.33.44.55] | invalid |
first.last@[IPv6:a1::b211.22.33.44] | invalid |
first.last@[IPv6:a1::b2::11.22.33.44] | invalid |
first.last@[IPv6:a1::b3:] | invalid |
first.last@[IPv6::a2::b4] | invalid |
first.last@[IPv6:a1:a2:a3:a4:b1:b2:b3:] | invalid |
first.last@[IPv6::a2:a3:a4:b1:b2:b3:b4] | invalid |
first.last@[IPv6:a1:a2:a3:a4::b1:b2:b3:b4] | invalid |
Valid: 25/134
Invalid: 108/132
转载:邮箱正则表达式Comparing E-mail Address Validating Regular Expressions的更多相关文章
- 正则表达式(Regular expressions)使用笔记
Regular expressions are a powerful language for matching text patterns. This page gives a basic intr ...
- Python之Regular Expressions(正则表达式)
在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要.正则表达式就是用于描述这些规则的工具.换句话说,正则表达式就是记录文本规则的代码. 很可能你使用过Windows/Dos下用 ...
- 自学Zabbix8.1 Regular expressions 正则表达式
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix8.1 Regular expressions 正则表达式 1. 配置 点击Adm ...
- 正则表达式备忘录-Regular Expressions Cheatsheet中文版
正则表达式备忘录Regular Expressions Cheatsheet中文版原文:https://www.maketecheasier.com/cheatsheet/regex/ 测试文件a.t ...
- Jmeter 正则表达式提取器详解(Regular Expression Exactor)
Jmeter 正则表达式提取器详解(Regular Expression Exactor) Name(名称):随意设置,最好有业务意义. Comments(注释):随意设置,可以为空 Apply to ...
- QQ邮箱发送邮件,出现mail from address must be same as authorization user错误
之前做的一个系统,有个发送邮件的功能,一直能正常使用,今天同事说QQ邮箱发送不了. 立马着手调试,发现服务器一直出现“mail from address must be same as authori ...
- CentOS 7 使用外部邮箱 发送邮件和附件—mail,mailx
1.查看软件包是否安装 [root@localhost ~]# rpm -qa|grep mail mailx-12.5-12.el7_0.x86_64 javamail-1.4.6-8.el7.no ...
- 转载 Python 正则表达式入门(初级篇)
Python 正则表达式入门(初级篇) 本文主要为没有使用正则表达式经验的新手入门所写.转载请写明出处 引子 首先说 正则表达式是什么? 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达式 ...
- [转载]java正则表达式
转载自:http://butter.iteye.com/blog/1189600 1.正则表达式的知识要点1.正则表达式是什么?正则表达式是一种可以用于模式匹配和替换的强有力的工具.2.正则表达式的优 ...
随机推荐
- IOS 使用Interface Builder开发界面入门与技巧
引言: 通过Interface Builder(简称IB)来制作界面一直是iOS开发界饱受争议的方式.主要争议的话题是不太适合团队协作开发,再就是对IB的使用比较生疏,觉得IB只能完成一些很简单的功能 ...
- Linux 学习笔记 Linux环境变量初稿
set命令会显示为某个特定进程设置的所有环境变量,但不包括一些没有设置值的默认环境变量 可以通过等号来给环境变量赋值,值可以是数值或字符串 如果要给变量赋一个含有空格的字符串值,必需用单引号来界定字符 ...
- Linux 学习笔记 查看文件内容诸多命令
查看文件内容 1.查看文件统计信息 stat 提供文件系统上某个文件的所有状态信息 2.查看文件类型 file 用来查看文件类型 (该命令将文件分成3类:文本类型:可执行文件:数据文件) 如果你有从未 ...
- Peter's Hobby
Problem Description Recently, Peter likes to measure the humidity of leaves. He recorded a leaf humi ...
- cocos2d-x3.x使用rapidjson
rapidjson效率高,所以之前cocostudio里面解析用的jsoncpp也换成了rapidjson. 引擎又带有rapidjson库,所以不用单独去下载,直接就可以用. 这里主要写一下关于解析 ...
- MAC下查看端口占用并杀死进程
Eclipse在Run on Server时,Tomcat是开启的,但是报错,显示8080.8005和8009端口被占用 终端输入 查看所有开启的端口 sudo lsof -i -P | grep - ...
- MySQL Index Condition Pushdown(ICP) 优化
本文是作者留下的一个坑,他去上茅坑了.茅坑是谁?你猜.
- css实现居中
--在html常常用到居中 --1.可以用<center></center> --2.可以用css 演示代码: <!DOCTYPE html PUBLIC "- ...
- 物理CPU、物理核跟逻辑核的区分
一般来说,物理CPU个数×每颗核数就应该等于逻辑CPU的个数,如果不相等的话,则表示服务器的CPU支持超线程技术 ,所以您的电脑是双核的. 一 概念① 物理CPU 实际Server中插槽上的CPU个数 ...
- 双向BFS
转自“Yuan” 如果目标也已知的话,用双向BFS能很大提高速度 单向时,是 b^len的扩展. 双向的话,2*b^(len/2) 快了很多,特别是分支因子b较大时 至于实现上,网上有些做法是用两个 ...