When URL parsers disagree
I have temporarily forgotten where I got this from but below is a URL test I have used.  Perhaps someone here recognises it.<p>1 indicates valid<p><pre><code>   http:&#x2F;&#x2F;foo.com&#x2F;blah_blah 1 1 1 1 1 1 1 1 1 1 1 1 1
   http:&#x2F;&#x2F;foo.com&#x2F;blah_blah&#x2F; 1 1 1 1 1 1 1 1 1 1 1 1 1
   http:&#x2F;&#x2F;foo.com&#x2F;blah_blah_(wikipedia) 1 1 1 1 1 1 1 1 1 0 1 1 1
   http:&#x2F;&#x2F;foo.com&#x2F;blah_blah_(wikipedia)_(again) 1 1 1 1 1 1 1 1 1 0 1 1 1
   http:&#x2F;&#x2F;www.example.com&#x2F;wpstyle&#x2F;?p=364 1 1 1 1 1 1 1 1 1 1 1 1 1
   https:&#x2F;&#x2F;www.example.com&#x2F;foo&#x2F;?bar=baz&amp;inga=42&amp;quux 1 1 1 1 1 1 1 1 1 1 1 1 1
   http:&#x2F;&#x2F;*df.ws&#x2F;123 0 0 1 1 1 1 0 1 1 1 1 1 0
   http:&#x2F;&#x2F;userid:password@example.com:8080 0 1 1 1 1 0 1 1 1 1 1 1 1
   http:&#x2F;&#x2F;userid:password@example.com:8080&#x2F; 0 1 1 1 1 0 1 1 1 1 1 1 1
   http:&#x2F;&#x2F;userid@example.com 0 1 1 1 1 0 1 1 1 1 1 1 1
   http:&#x2F;&#x2F;userid@example.com&#x2F; 0 1 1 1 1 0 1 1 1 1 1 1 1
   http:&#x2F;&#x2F;userid@example.com:8080 0 1 1 1 1 0 1 1 1 1 1 1 1
   http:&#x2F;&#x2F;userid@example.com:8080&#x2F; 0 1 1 1 1 0 1 1 1 1 1 1 1
   http:&#x2F;&#x2F;userid:password@example.com 0 1 1 1 1 0 1 1 1 1 1 1 1
   http:&#x2F;&#x2F;userid:password@example.com&#x2F; 0 1 1 1 1 0 1 1 1 1 1 1 1
   http:&#x2F;&#x2F;142.42.1.1&#x2F; 0 1 1 1 1 1 1 1 1 1 1 1 1
   http:&#x2F;&#x2F;142.42.1.1:8080&#x2F; 0 1 1 1 1 1 1 1 1 1 1 1 1
   http:&#x2F;&#x2F;**.ws&#x2F;*** 0 0 1 1 1 0 0 1 1 0 1 1 0
   http:&#x2F;&#x2F;88.ws 0 0 1 1 1 0 0 1 1 1 1 1 0
   http:&#x2F;&#x2F;88.ws&#x2F; 0 0 1 1 1 0 0 1 1 1 1 1 0
   http:&#x2F;&#x2F;foo.com&#x2F;blah_(wikipedia)#cite-1 1 1 1 1 1 1 1 1 1 1 1 1 1
   http:&#x2F;&#x2F;foo.com&#x2F;blah_(wikipedia)_blah#cite-1 1 1 1 1 1 1 1 1 1 1 1 1 1
   http:&#x2F;&#x2F;foo.com&#x2F;unicode_(*)_in_parens 1 1 1 1 1 1 0 1 1 1 1 1 0
   http:&#x2F;&#x2F;foo.com&#x2F;(something)?after=parens 1 1 1 1 1 1 1 1 1 1 1 1 1
   http:&#x2F;&#x2F;:-).damowmow.com&#x2F; 0 1 1 1 1 0 0 1 1 1 1 1 0
   http:&#x2F;&#x2F;code.google.com&#x2F;events&#x2F;#&amp;product=browser 1 1 1 1 1 1 1 1 1 1 1 1 1
   http:&#x2F;&#x2F;j.mp 1 1 1 1 1 1 1 1 1 1 1 1 1
   ftp:&#x2F;&#x2F;foo.bar&#x2F;baz 0 0 1 1 1 1 1 1 1 1 1 1 1
   http:&#x2F;&#x2F;foo.bar&#x2F;?q=Test URL-encoded stuff 0 1 1 1 1 1 1 1 1 1 1 1 1
   http:&#x2F;&#x2F;m+tka+l+.ahx+t+b+a+r+ 0 0 1 1 1 0 0 1 1 0 1 1 0
   http:&#x2F;&#x2F;******.****** 0 0 1 1 1 0 0 1 1 0 1 1 0
   http:&#x2F;&#x2F;******************.********************* 0 0 1 1 1 0 0 1 1 0 1 1 0
   http:&#x2F;&#x2F;-.~_!$&amp;&#x27;()*+,;=:@:80/::::::@example.com 0 1 0 1 1 0 0 1 1 1 1 1 1
   http:&#x2F;&#x2F;1337.net 1 1 1 1 1 1 1 1 1 1 1 1 1
   http:&#x2F;&#x2F;a.b-c.de 1 1 1 1 1 1 1 1 1 1 0 1 1
   http:&#x2F;&#x2F;223.255.255.254 0 1 1 1 1 1 1 1 1 1 1 1 1
   https:&#x2F;&#x2F;foo_bar.example.com&#x2F; 1 1 1 1 1 1 0 1 1 1 1 0 0
   These URLs should fail (0 -&gt; correct)
   http:&#x2F;&#x2F; 0 0 0 0 0 0 0 0 1 0 0 0 0
   http:&#x2F;&#x2F;. 0 0 0 0 1 0 1 0 1 0 0 0 0
   http:&#x2F;&#x2F;.. 0 0 0 0 1 0 1 0 1 0 0 0 0
   http:&#x2F;&#x2F;..&#x2F; 0 1 1 1 1 0 1 0 1 1 0 0 0
   http:&#x2F;&#x2F;? 0 0 0 0 1 0 0 0 1 0 0 0 0
   http:&#x2F;&#x2F;?? 0 0 0 0 1 0 0 0 1 0 0 0 0
   http:&#x2F;&#x2F;??&#x2F; 0 1 1 1 1 0 0 0 1 1 0 0 0
   http:&#x2F;&#x2F;# 0 0 0 1 1 0 0 0 1 1 0 0 0
   http:&#x2F;&#x2F;## 0 1 0 1 1 0 0 0 1 1 0 0 0
   http:&#x2F;&#x2F;##&#x2F; 0 1 1 1 1 0 0 0 1 1 0 0 0
   http:&#x2F;&#x2F;foo.bar?q=Spaces should be encoded 0 1 1 1 1 1 0 0 1 1 0 0 0
   &#x2F;&#x2F; 0 0 0 0 0 0 0 0 0 0 0 0 0
   &#x2F;&#x2F;a 0 0 0 0 0 0 0 0 0 0 0 0 0
   &#x2F;&#x2F;&#x2F;a 0 0 0 0 0 0 0 0 0 0 0 0 0
   &#x2F;&#x2F;&#x2F; 0 0 0 0 0 0 0 0 0 0 0 0 0
   http:&#x2F;&#x2F;&#x2F;a 0 1 1 1 1 0 0 0 1 1 0 0 0
   foo.com 0 0 0 0 1 0 0 0 0 0 0 0 0
   rdar:&#x2F;&#x2F;1234 0 0 1 1 1 0 1 0 1 0 0 0 1
   h:&#x2F;&#x2F;test 0 0 1 0 1 0 1 0 1 0 0 0 1
   http:&#x2F;&#x2F; shouldfail.com 0 0 0 0 1 0 0 0 1 1 0 0 0
   :&#x2F;&#x2F; should fail 0 0 0 0 0 0 0 0 0 0 0 0 0
   http:&#x2F;&#x2F;foo.bar&#x2F;foo(bar)baz quux 0 1 1 1 1 1 0 0 1 1 0 0 0
   ftps:&#x2F;&#x2F;foo.bar&#x2F; 0 0 1 1 1 0 1 0 1 0 0 0 1
   http:&#x2F;&#x2F;-error-.invalid&#x2F; 0 1 1 1 1 1 1 1 1 1 0 0 0
   http:&#x2F;&#x2F;a.b--c.de&#x2F; 1 1 1 1 1 1 1 1 1 1 0 0 1
   http:&#x2F;&#x2F;-a.b.co 1 1 1 1 1 1 1 1 1 1 0 0 0
   http:&#x2F;&#x2F;a.b-.co 1 1 1 1 1 1 1 1 1 1 0 0 0
   http:&#x2F;&#x2F;0.0.0.0 0 1 1 1 1 1 1 1 1 1 1 0 1
   http:&#x2F;&#x2F;10.1.1.0 0 1 1 1 1 1 1 1 1 1 1 0 1
   http:&#x2F;&#x2F;10.1.1.255 0 1 1 1 1 1 1 1 1 1 1 0 1
   http:&#x2F;&#x2F;224.1.1.1 0 1 1 1 1 1 1 1 1 1 1 0 1
   http:&#x2F;&#x2F;1.1.1.1.1 0 1 1 1 1 1 1 1 1 1 1 0 1
   http:&#x2F;&#x2F;123.123.123 0 1 1 1 1 1 1 1 1 1 1 0 1
   http:&#x2F;&#x2F;3628126748 0 1 1 1 1 0 1 1 1 1 1 0 1
   http:&#x2F;&#x2F;.www.foo.bar&#x2F; 0 1 1 1 1 0 1 0 1 1 0 0 0
   http:&#x2F;&#x2F;www.foo.bar.&#x2F; 0 1 1 1 1 1 1 1 1 1 1 0 1
   http:&#x2F;&#x2F;.www.foo.bar.&#x2F; 0 1 1 1 1 0 1 0 1 1 0 0 0
   http:&#x2F;&#x2F;10.1.1.1 0 1 1 1 1 1 1 1 1 1 1 0 1
   http:&#x2F;&#x2F;10.1.1.254 0 1 1 1 1 1 1 1 1 1 1 0 1</code></pre>