Created
August 7, 2015 00:50
-
-
Save javan/6aaebfeb5fe415498028 to your computer and use it in GitHub Desktop.
DOM URL validation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
isValidURL = (value) -> | |
input = document.createElement("input") | |
input.type = "url" | |
input.value = value | |
input.required = true | |
input.checkValidity() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
valid = ["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"] | |
invalid = ["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"] | |
console.group("Valid URLs") | |
for url in valid | |
if isValidURL(url) | |
console.log("PASS", url) | |
else | |
console.log("FAIL", url) | |
console.groupEnd() | |
console.group("Invalid URLs") | |
for url in invalid | |
if isValidURL(url) | |
console.log("FAIL", url) | |
else | |
console.log("PASS", url) | |
console.groupEnd() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Valid URLs: | |
PASS http://foo.com/blah_blah/ | |
PASS http://foo.com/blah_blah_(wikipedia) | |
PASS http://foo.com/blah_blah_(wikipedia)_(again) | |
PASS http://www.example.com/wpstyle/?p=364 | |
PASS https://www.example.com/foo/?bar=baz&inga=42&quux | |
PASS http://✪df.ws/123 | |
PASS http://userid:password@example.com:8080 | |
PASS http://userid:password@example.com:8080/ | |
PASS http://userid@example.com | |
PASS http://userid@example.com/ | |
PASS http://userid@example.com:8080 | |
PASS http://userid@example.com:8080/ | |
PASS http://userid:password@example.com | |
PASS http://userid:password@example.com/ | |
PASS http://142.42.1.1/ | |
PASS http://142.42.1.1:8080/ | |
PASS http://➡.ws/䨹 | |
PASS http://⌘.ws | |
PASS http://⌘.ws/ | |
PASS http://foo.com/blah_(wikipedia)#cite-1 | |
PASS http://foo.com/blah_(wikipedia)_blah#cite-1 | |
PASS http://foo.com/unicode_(✪)_in_parens | |
PASS http://foo.com/(something)?after=parens | |
PASS http://☺.damowmow.com/ | |
PASS http://code.google.com/events/#&product=browser | |
PASS http://j.mp | |
PASS ftp://foo.bar/baz | |
PASS http://foo.bar/?q=Test%20URL-encoded%20stuff | |
PASS http://مثال.إختبار | |
PASS http://例子.测试 | |
PASS http://उदाहरण.परीक्षा | |
PASS http://-.~_!$&'()*+,;=:%40:80%2f::::::@example.com | |
PASS http://1337.net | |
PASS http://a.b-c.de | |
PASS http://223.255.255.254 | |
Invalid URLs: | |
PASS http:// | |
FAIL http://. | |
FAIL http://.. | |
FAIL http://../ | |
PASS http://? | |
PASS http://?? | |
PASS http://??/ | |
PASS http://# | |
PASS http://## | |
PASS http://##/ | |
FAIL http://foo.bar?q=Spaces should be encoded | |
PASS // | |
PASS //a | |
PASS ///a | |
PASS /// | |
FAIL http:///a | |
PASS foo.com | |
FAIL rdar://1234 | |
FAIL h://test | |
FAIL http:// shouldfail.com | |
PASS :// should fail | |
FAIL http://foo.bar/foo(bar)baz quux | |
FAIL ftps://foo.bar/ | |
FAIL http://-error-.invalid/ | |
FAIL http://a.b--c.de/ | |
FAIL http://-a.b.co | |
FAIL http://a.b-.co | |
FAIL http://0.0.0.0 | |
FAIL http://10.1.1.0 | |
FAIL http://10.1.1.255 | |
FAIL http://224.1.1.1 | |
FAIL http://1.1.1.1.1 | |
FAIL http://123.123.123 | |
FAIL http://3628126748 | |
FAIL http://.www.foo.bar/ | |
FAIL http://www.foo.bar./ | |
FAIL http://.www.foo.bar./ | |
FAIL http://10.1.1.1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment