Should Pass

http://foo.com/blah_blah

http://foo.com/blah_blah/

http://foo.com/blah_blah_(wikipedia)

http://foo.com/blah_blah_(wikipedia)_(again)

http://www.example.com/wpstyle/?p=364

https://www.example.com/foo/?bar=baz&inga=42&quux

http://142.42.1.1/

http://142.42.1.1:8080/

http://foo.com/blah_(wikipedia)#cite-1

http://foo.com/blah_(wikipedia)_blah#cite-1

http://foo.com/(something)?after=parens

http://code.google.com/events/#&product=browser

http://j.mp

ftp://foo.bar/baz

http://foo.bar/?q=Test%20URL-encoded%20stuff

http://1337.net

http://a.b-c.de

http://223.255.255.254

www.google.com

Should Fail

http://

http://.

http://..

http://../

http://?

http://??

http://??/

http://#

http://##

http://##/

http://foo.bar?q=Spaces should be encoded

//

//a

///a

///

http:///a

foo.com

rdar://1234

h://test

http:// shouldfail.com

:// should fail

http://foo.bar/foo(bar)baz quux

http://-error-.invalid/

http://-a.b.co

http://3628126748

These should be valid

first.last@test.org

1234567890123456789012345678901234567890123456789012345678901234@test.org

first.last@x23456789012345678901234567890123456789012345678901234567890123.test.org

first.last@3com.com

first.last@123.test.org

user+mailbox@test.org

_somename@test.org

dclo@us.ibm.com

peter.piper@test.org

test@test.org

TEST@test.org

1234567890@test.org

test+test@test.org

test-test@test.org

test.test@test.org

test@example.test.org

test@example.example.test.org

_Yosemite.Sam@test.org

Ima.Fool@test.org

name.lastname@domain.com

a@bar.com

a-b@bar.com

+@b.c

+@b.com

a@b.co-foo.uk

valid@about.museum

shaitan@my-domain.thisisminekthx

test@test.com

test@xn--example.com

test@example.com

These should be invalid

first.last@sub.do,com

first.last

.first.last@test.org

first.last.@test.org

first..last@test.org

first.last@

abc@def@test.org

@test.org

doug@

.dot@test.org

dot.@test.org

two..dot@test.org

hello world@test.org

test.test.org

test@@test.org

[test]@test.org

()[]\;:,><@test.org

test@.

test@example.

test@.org

NotAnEmail

.@

@bar.com

@@bar.com

aaa.com

aaa@.com

aaa@.123

a@bar.com.

-@..com

-@a..com

invalid@about.museum-

test@...........com

Repo Links

#49

!87

6a09fde

fake-user/fake-repository#538

fake-user/fake-repository!539

fake-user/fake-repository@594b25d

fake-user/fake-repository#538

fake-user/fake-repository!539

fake-user/fake-repository@594b25d5

fake-user/fake-repository#538

fake-user/fake-repository!539

fake-user/fake-repository#538

fake-user/fake-repository!539

fake-user/fake-repository@594b25d

#49

fake-repository#87

fake-repository@594b25d