Skip to content

Instantly share code, notes, and snippets.

@j3j5
Created August 31, 2016 21:38
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save j3j5/8336b0224167636bed462950400ff2df to your computer and use it in GitHub Desktop.
Save j3j5/8336b0224167636bed462950400ff2df to your computer and use it in GitHub Desktop.
SHOULD MATCH:
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://✪df.ws/123
http://userid:password@example.com:8080
http://userid:password@example.com:8080/
http://userid@example.com
http://userid@example.com/
http://userid@example.com:8080
http://userid@example.com:8080/
http://userid:password@example.com
http://userid:password@example.com/
http://142.42.1.1/
http://142.42.1.1:8080/
http://➡.ws/䨹
http://⌘.ws
http://⌘.ws/
http://foo.com/blah_(wikipedia)#cite-1
http://foo.com/blah_(wikipedia)_blah#cite-1
http://foo.com/unicode_(✪)_in_parens
http://foo.com/(something)?after=parens
http://☺.damowmow.com/
http://code.google.com/events/#&product=browser
http://j.mp
ftp://foo.bar/baz
http://foo.bar/?q=Test%20URL-encoded%20stuff
http://مثال.إختبار
http://例子.测试
http://उदाहरण.परीक्षा
http://-.~_!$&'()*+,;=:%40:80%2f::::::@example.com
http://1337.net
http://a.b-c.de
http://223.255.255.254
SHOULD NOT MATCH:
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
ftps://foo.bar/
http://-error-.invalid/
http://a.b--c.de/
http://-a.b.co
http://a.b-.co
http://0.0.0.0
http://10.1.1.0
http://10.1.1.255
http://224.1.1.1
http://1.1.1.1.1
http://123.123.123
http://3628126748
http://.www.foo.bar/
http://www.foo.bar./
http://.www.foo.bar./
http://10.1.1.1
http://10.1.1.254
@Shilpa-Rani
Copy link

Thanks for compiling this list. These are the following discrepancies that I have encountered though:
http://223.255.255.254 is an invalid url.
http://a.b--c.de/ is a valid url.

@j3j5
Copy link
Author

j3j5 commented Sep 13, 2021

I got this list (as as way to keep it accessible) from here, apparently somebody else posted it as a gist on here (with a lengthy discussion). I think you are right about the 2nd one (although http://ab--c.de wouldn't be a valid url) but wrong about the first one (what's wrong with that one?). Anyway, better check those links because I believe they've kept updating and discussing this list.

@ruasoliveira
Copy link

ruasoliveira commented Jul 28, 2022

The first one ( http://223.255.255.254 ) is actually valid. Although nobody responds because there isn't a server there.

The reason it's valid is because it is a valid routable IP address. The 255 number only means a broadcast address if it is located at the last position in the address. (This varies, of course, depending on your netmask).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment