Linkify Plus Plus Test Page

Random test 1

Original from http://piro.sakura.ne.jp/xul/textlink/index.html.en#testcases

Mozilla(http://www.mozilla.org/) started as a project of next generation www-browser of Netscape(http://www.netscape.com/). See http://www.mozilla.org/src-faq.html#1. Mozilla were planned to be released as "Netscape Communicator 5.0", but the new layout engine "NGLayout" ttp://www.mozilla.org/newlayout/gecko.html prevented it. Netscape 6 ttp://ftp.netscape.com/pub/netscape6/ was released after 2 years from the deciding.And now, the Firefox(h**p://www.mozilla.com/firefox/) web browser is released from the Mozilla Corporation(h++p://www.mozilla.com/).

Now, TextLink can parse splitted text nodes as joined texts. Mozilla(http://www.mozilla.org/) started as a project of next generation www-browser of Netscape(http://www.netscape.com/). See http://www.mozilla.org/src-faq.html#1. Mozilla were planned to be released as "Netscape Communicator 5.0", but the new layout engine "NGLayout" ttp://www.mozilla.org/newlayout/gecko.html prevented it. Netscape 6 ttp://ftp.netscape.com/pub/netscape6/ was released after 2 years from the deciding.

There are relative links. Firefox www.mozilla.org/products/firefox/ is a new type www-browser and it very extendable. You can find many extensions from update.mozilla.org. I also release some extensions. TBE ./tabextensions/index.html.en and PopupALT _popupalt.html.en are parts of them. (Text Link ignores relative pathes which includes only a filename like "_popupalt.html.en", because strings with the pattern usually indicates only filenames, not relative pathes.) See the parent page ../xul/xul.html to find other extensions in this website.

There are links including multi-byte characters. The URI of this website is "http://piro.sakura.ne.jp/", but you can use the secondary URI, "ttp://www98.sakura.ne.jp/ ̄piro/" too.

Also I don't want these: http://ptt.cc/1234WITHUNICODE, http://example.org/, http://example.org/,http://example.org, 127.0.0.1, http://127.0.0.1, telnet://ptt.cc, AFTERUNICODEhttp://example.org, I'm so happy www, www.sohappywwwhaha, www....

Random test 2

Original from http://yellow5.us/firefox/testcases.txt

ABOUT about:blank about:config MAILTO mailto:example@example.com HTTP http://www.example.com http://www.example.com. http://www.example.com/test/ http://www.example.com/test/. http://www.example.com/test/index.html http://www.example.com/test/index.html. http://user@www.example.com http://user@www.example.com. http://user@www.example.com/test/ http://user@www.example.com/test/. http://user@www.example.com/test/index.html http://user@www.example.com/test/index.html. http://user:password@www.example.com http://user:password@www.example.com. http://user:password@www.example.com/test/ http://user:password@www.example.com/test/. http://user:password@www.example.com/test/index.html http://user:password@www.example.com/test/index.html. http://192.168.0.1 http://192.168.0.1. http://192.168.0.1/test/ http://192.168.0.1/test/. http://192.168.0.1/test/index.html http://192.168.0.1/test/index.html. http://user@192.168.0.1 http://user@192.168.0.1. http://user@192.168.0.1/test/ http://user@192.168.0.1/test/. http://user@192.168.0.1/test/index.html http://user@192.168.0.1/test/index.html. http://user:password@192.168.0.1 http://user:password@192.168.0.1. http://user:password@192.168.0.1/test/ http://user:password@192.168.0.1/test/. http://user:password@192.168.0.1/test/index.html http://user:password@192.168.0.1/test/index.html. HTTPS https://www.example.com https://www.example.com. https://www.example.com/test/ https://www.example.com/test/. https://www.example.com/test/index.html https://www.example.com/test/index.html. https://user@www.example.com https://user@www.example.com. https://user@www.example.com/test/ https://user@www.example.com/test/. https://user@www.example.com/test/index.html https://user@www.example.com/test/index.html. https://user:password@www.example.com https://user:password@www.example.com. https://user:password@www.example.com/test/ https://user:password@www.example.com/test/. https://user:password@www.example.com/test/index.html https://user:password@www.example.com/test/index.html. https://192.168.0.1 https://192.168.0.1. https://192.168.0.1/test/ https://192.168.0.1/test/. https://192.168.0.1/test/index.html https://192.168.0.1/test/index.html. https://user@192.168.0.1 https://user@192.168.0.1. https://user@192.168.0.1/test/ https://user@192.168.0.1/test/. https://user@192.168.0.1/test/index.html https://user@192.168.0.1/test/index.html. https://user:password@192.168.0.1 https://user:password@192.168.0.1. https://user:password@192.168.0.1/test/ https://user:password@192.168.0.1/test/. https://user:password@192.168.0.1/test/index.html https://user:password@192.168.0.1/test/index.html. FTP ftp://www.example.com ftp://www.example.com. ftp://www.example.com/test/ ftp://www.example.com/test/. ftp://www.example.com/test/index.html ftp://www.example.com/test/index.html. ftp://user@www.example.com ftp://user@www.example.com. ftp://user@www.example.com/test/ ftp://user@www.example.com/test/. ftp://user@www.example.com/test/index.html ftp://user@www.example.com/test/index.html. ftp://user:password@www.example.com ftp://user:password@www.example.com. ftp://user:password@www.example.com/test/ ftp://user:password@www.example.com/test/. ftp://user:password@www.example.com/test/index.html ftp://user:password@www.example.com/test/index.html. ftp://192.168.0.1 ftp://192.168.0.1. ftp://192.168.0.1/test/ ftp://192.168.0.1/test/. ftp://192.168.0.1/test/index.html ftp://192.168.0.1/test/index.html. ftp://user@192.168.0.1 ftp://user@192.168.0.1. ftp://user@192.168.0.1/test/ ftp://user@192.168.0.1/test/. ftp://user@192.168.0.1/test/index.html ftp://user@192.168.0.1/test/index.html. ftp://user:password@192.168.0.1 ftp://user:password@192.168.0.1. ftp://user:password@192.168.0.1/test/ ftp://user:password@192.168.0.1/test/. ftp://user:password@192.168.0.1/test/index.html ftp://user:password@192.168.0.1/test/index.html. NNTP nntp://www.example.com nntp://www.example.com. nntp://www.example.com/test/ nntp://www.example.com/test/. nntp://www.example.com/test/index.html nntp://www.example.com/test/index.html. nntp://user@www.example.com nntp://user@www.example.com. nntp://user@www.example.com/test/ nntp://user@www.example.com/test/. nntp://user@www.example.com/test/index.html nntp://user@www.example.com/test/index.html. nntp://user:password@www.example.com nntp://user:password@www.example.com. nntp://user:password@www.example.com/test/ nntp://user:password@www.example.com/test/. nntp://user:password@www.example.com/test/index.html nntp://user:password@www.example.com/test/index.html. nntp://192.168.0.1 nntp://192.168.0.1. nntp://192.168.0.1/test/ nntp://192.168.0.1/test/. nntp://192.168.0.1/test/index.html nntp://192.168.0.1/test/index.html. nntp://user@192.168.0.1 nntp://user@192.168.0.1. nntp://user@192.168.0.1/test/ nntp://user@192.168.0.1/test/. nntp://user@192.168.0.1/test/index.html nntp://user@192.168.0.1/test/index.html. nntp://user:password@192.168.0.1 nntp://user:password@192.168.0.1. nntp://user:password@192.168.0.1/test/ nntp://user:password@192.168.0.1/test/. nntp://user:password@192.168.0.1/test/index.html nntp://user:password@192.168.0.1/test/index.html. NEWS news://www.example.com news://www.example.com. news://www.example.com/test/ news://www.example.com/test/. news://www.example.com/test/index.html news://www.example.com/test/index.html. news://user@www.example.com news://user@www.example.com. news://user@www.example.com/test/ news://user@www.example.com/test/. news://user@www.example.com/test/index.html news://user@www.example.com/test/index.html. news://user:password@www.example.com news://user:password@www.example.com. news://user:password@www.example.com/test/ news://user:password@www.example.com/test/. news://user:password@www.example.com/test/index.html news://user:password@www.example.com/test/index.html. news://192.168.0.1 news://192.168.0.1. news://192.168.0.1/test/ news://192.168.0.1/test/. news://192.168.0.1/test/index.html news://192.168.0.1/test/index.html. news://user@192.168.0.1 news://user@192.168.0.1. news://user@192.168.0.1/test/ news://user@192.168.0.1/test/. news://user@192.168.0.1/test/index.html news://user@192.168.0.1/test/index.html. news://user:password@192.168.0.1 news://user:password@192.168.0.1. news://user:password@192.168.0.1/test/ news://user:password@192.168.0.1/test/. news://user:password@192.168.0.1/test/index.html news://user:password@192.168.0.1/test/index.html. TELNET telnet://www.example.com telnet://www.example.com. telnet://www.example.com/test/ telnet://www.example.com/test/. telnet://www.example.com/test/index.html telnet://www.example.com/test/index.html. telnet://user@www.example.com telnet://user@www.example.com. telnet://user@www.example.com/test/ telnet://user@www.example.com/test/. telnet://user@www.example.com/test/index.html telnet://user@www.example.com/test/index.html. telnet://user:password@www.example.com telnet://user:password@www.example.com. telnet://user:password@www.example.com/test/ telnet://user:password@www.example.com/test/. telnet://user:password@www.example.com/test/index.html telnet://user:password@www.example.com/test/index.html. telnet://192.168.0.1 telnet://192.168.0.1. telnet://192.168.0.1/test/ telnet://192.168.0.1/test/. telnet://192.168.0.1/test/index.html telnet://192.168.0.1/test/index.html. telnet://user@192.168.0.1 telnet://user@192.168.0.1. telnet://user@192.168.0.1/test/ telnet://user@192.168.0.1/test/. telnet://user@192.168.0.1/test/index.html telnet://user@192.168.0.1/test/index.html. telnet://user:password@192.168.0.1 telnet://user:password@192.168.0.1. telnet://user:password@192.168.0.1/test/ telnet://user:password@192.168.0.1/test/. telnet://user:password@192.168.0.1/test/index.html telnet://user:password@192.168.0.1/test/index.html. IRC irc://www.example.com irc://www.example.com. irc://www.example.com/test/ irc://www.example.com/test/. irc://www.example.com/test/index.html irc://www.example.com/test/index.html. irc://user@www.example.com irc://user@www.example.com. irc://user@www.example.com/test/ irc://user@www.example.com/test/. irc://user@www.example.com/test/index.html irc://user@www.example.com/test/index.html. irc://user:password@www.example.com irc://user:password@www.example.com. irc://user:password@www.example.com/test/ irc://user:password@www.example.com/test/. irc://user:password@www.example.com/test/index.html irc://user:password@www.example.com/test/index.html. irc://192.168.0.1 irc://192.168.0.1. irc://192.168.0.1/test/ irc://192.168.0.1/test/. irc://192.168.0.1/test/index.html irc://192.168.0.1/test/index.html. irc://user@192.168.0.1 irc://user@192.168.0.1. irc://user@192.168.0.1/test/ irc://user@192.168.0.1/test/. irc://user@192.168.0.1/test/index.html irc://user@192.168.0.1/test/index.html. irc://user:password@192.168.0.1 irc://user:password@192.168.0.1. irc://user:password@192.168.0.1/test/ irc://user:password@192.168.0.1/test/. irc://user:password@192.168.0.1/test/index.html irc://user:password@192.168.0.1/test/index.html. CUSTOM hxxp://www.example.com hxxp://www.example.com. hxxp://www.example.com/test/ hxxp://www.example.com/test/. hxxp://www.example.com/test/index.html hxxp://www.example.com/test/index.html. hxxp://user@www.example.com hxxp://user@www.example.com. hxxp://user@www.example.com/test/ hxxp://user@www.example.com/test/. hxxp://user@www.example.com/test/index.html hxxp://user@www.example.com/test/index.html. hxxp://user:password@www.example.com hxxp://user:password@www.example.com. hxxp://user:password@www.example.com/test/ hxxp://user:password@www.example.com/test/. hxxp://user:password@www.example.com/test/index.html hxxp://user:password@www.example.com/test/index.html. hxxp://192.168.0.1 hxxp://192.168.0.1. hxxp://192.168.0.1/test/ hxxp://192.168.0.1/test/. hxxp://192.168.0.1/test/index.html hxxp://192.168.0.1/test/index.html. hxxp://user@192.168.0.1 hxxp://user@192.168.0.1. hxxp://user@192.168.0.1/test/ hxxp://user@192.168.0.1/test/. hxxp://user@192.168.0.1/test/index.html hxxp://user@192.168.0.1/test/index.html. hxxp://user:password@192.168.0.1 hxxp://user:password@192.168.0.1. hxxp://user:password@192.168.0.1/test/ hxxp://user:password@192.168.0.1/test/. hxxp://user:password@192.168.0.1/test/index.html hxxp://user:password@192.168.0.1/test/index.html. CUSTOM h**p://www.example.com h**p://www.example.com. h**p://www.example.com/test/ h**p://www.example.com/test/. h**p://www.example.com/test/index.html h**p://www.example.com/test/index.html. h**p://user@www.example.com h**p://user@www.example.com. h**p://user@www.example.com/test/ h**p://user@www.example.com/test/. h**p://user@www.example.com/test/index.html h**p://user@www.example.com/test/index.html. h**p://user:password@www.example.com h**p://user:password@www.example.com. h**p://user:password@www.example.com/test/ h**p://user:password@www.example.com/test/. h**p://user:password@www.example.com/test/index.html h**p://user:password@www.example.com/test/index.html. h**p://192.168.0.1 h**p://192.168.0.1. h**p://192.168.0.1/test/ h**p://192.168.0.1/test/. h**p://192.168.0.1/test/index.html h**p://192.168.0.1/test/index.html. h**p://user@192.168.0.1 h**p://user@192.168.0.1. h**p://user@192.168.0.1/test/ h**p://user@192.168.0.1/test/. h**p://user@192.168.0.1/test/index.html h**p://user@192.168.0.1/test/index.html. h**p://user:password@192.168.0.1 h**p://user:password@192.168.0.1. h**p://user:password@192.168.0.1/test/ h**p://user:password@192.168.0.1/test/. h**p://user:password@192.168.0.1/test/index.html h**p://user:password@192.168.0.1/test/index.html. WWW (no protocol) www.example.com www.example.com. www.example.com/test/ www.example.com/test/. www.example.com/test/index.html www.example.com/test/index.html. user@www.example.com (ambiguous, but recognized subdomain. not an e-mail address) user@www.example.com. (ambiguous, but recognized subdomain. not an e-mail address) user@www.example.com/test/ user@www.example.com/test/. user@www.example.com/test/index.html user@www.example.com/test/index.html. user:password@www.example.com user:password@www.example.com. user:password@www.example.com/test/ user:password@www.example.com/test/. user:password@www.example.com/test/index.html user:password@www.example.com/test/index.html. FTP (no protocol) ftp.example.com ftp.example.com. ftp.example.com/test/ ftp.example.com/test/. ftp.example.com/test/index.html ftp.example.com/test/index.html. user@ftp.example.com (ambiguous, but recognized subdomain. not an e-mail address) user@ftp.example.com. (ambiguous, but recognized subdomain. not an e-mail address) user@ftp.example.com/test/ user@ftp.example.com/test/. user@ftp.example.com/test/index.html user@ftp.example.com/test/index.html. user:password@ftp.example.com user:password@ftp.example.com. user:password@ftp.example.com/test/ user:password@ftp.example.com/test/. user:password@ftp.example.com/test/index.html user:password@ftp.example.com/test/index.html. IRC (no protocol) irc.example.com irc.example.com. irc.example.com/test/ irc.example.com/test/. irc.example.com/test/index.html irc.example.com/test/index.html. user@irc.example.com (ambiguous, but recognized subdomain. not an e-mail address) user@irc.example.com. (ambiguous, but recognized subdomain. not an e-mail address) user@irc.example.com/test/ user@irc.example.com/test/. user@irc.example.com/test/index.html user@irc.example.com/test/index.html. user:password@irc.example.com user:password@irc.example.com. user:password@irc.example.com/test/ user:password@irc.example.com/test/. user:password@irc.example.com/test/index.html user:password@irc.example.com/test/index.html. #test-name@irc.example.com #test-name@irc.example.com. irc.example.com#test-name irc.example.com#test-name. IP (no protocol) 192.168.0.1 (not linkified; pattern too common) 192.168.0.1. (not linkified; pattern too common) 192.168.0.1/test/ 192.168.0.1/test/. 192.168.0.1/test/index.html 192.168.0.1/test/index.html. user@192.168.0.1 (ambiguous; should be recognized as e-mail) user@192.168.0.1. (ambiguous; should be recognized as e-mail) user@192.168.0.1/test/ user@192.168.0.1/test/. user@192.168.0.1/test/index.html user@192.168.0.1/test/index.html. user:password@192.168.0.1 user:password@192.168.0.1. user:password@192.168.0.1/test/ user:password@192.168.0.1/test/. user:password@192.168.0.1/test/index.html user:password@192.168.0.1/test/index.html. OTHER (no protocol) subdomain.example.com (not linkified; pattern too common) subdomain.example.com. (not linkified; pattern too common) subdomain.example.com/test/ subdomain.example.com/test/. subdomain.example.com/test/index.html subdomain.example.com/test/index.html. user@subdomain.example.com (ambiguous; should be recognized as e-mail) user@subdomain.example.com. (ambiguous; should be recognized as e-mail) user@subdomain.example.com/test/ user@subdomain.example.com/test/. user@subdomain.example.com/test/index.html user@subdomain.example.com/test/index.html. user:password@subdomain.example.com user:password@subdomain.example.com. user:password@subdomain.example.com/test/ user:password@subdomain.example.com/test/. user:password@subdomain.example.com/test/index.html user:password@subdomain.example.com/test/index.html. EMAIL test@example.com test@example.com. test.test@test.example.com test.test@test.example.com. test@192.168.0.1 test@192.168.0.1. test.test@192.168.0.1 test.test@192.168.0.1. IMAGE http://www.example.com/image.jpg http://www.example.com/image.jpeg http://www.example.com/image.png http://www.example.com/image.gif http://www.example.com/image.bmp http://www.example.com/image.jpg.test (not an image) http://www.example.com/image.jpeg.test (not an image) http://www.example.com/image.png.test (not an image) http://www.example.com/image.gif.test (not an image) http://www.example.com/image.bmp.test (not an image) http://www.example.com/image.jpg?test http://www.example.com/image.jpeg?test http://www.example.com/image.png?test http://www.example.com/image.gif?test http://www.example.com/image.bmp?test http://www.example.com/image.test?jpg (not an image) http://www.example.com/image.test?jpeg (not an image) http://www.example.com/image.test?png (not an image) http://www.example.com/image.test?gif (not an image) http://www.example.com/image.test?bmp (not an image) http://www.example.com/image.jpg#test http://www.example.com/image.jpeg#test http://www.example.com/image.png#test http://www.example.com/image.gif#test http://www.example.com/image.bmp#test http://www.example.com/image.test#jpg (not an image) http://www.example.com/image.test#jpeg (not an image) http://www.example.com/image.test#png (not an image) http://www.example.com/image.test#gif (not an image) http://www.example.com/image.test#bmp (not an image) https://greasyfork.org/assets/blacklogo96-0596aff6108f83c3073764496d7768ec.png http://i.imgur.com/25zhGbg.jpg https://f061172b00c7bca1e36fdd56f00f238cf2545831.googledrive.com/host/0B_P4A1paVEPbb1UxSUdua3Fwc1k/Vorago_chathead.png https://secure.runescape.com/m=weblogin/logout.ws?.png Dots http://www.example.com http://www.example.com. http://www.example.com.. http://www.example.com... http://www.example.com/ http://www.example.com/. http://www.example.com/.. http://www.example.com/... http://www.example.com/ http://www.example.com/. http://www.example.com/./. http://www.example.com/../.

Random test 3

Original from http://markdown-it.github.io/linkify-it/, licensed under MIT

% % Regular links % My http://example.com site My http://example.com/ site http://example.com/foo_bar/ http://user:pass@example.com:8080 http://user@example.com http://user@example.com:8080 http://user:pass@example.com [https](https://www.ibm.com)[mailto](mailto:someone@ibm.com) % should not catch as auth (before @ in big link) http://example.com:8080 http://example.com/?foo=bar http://example.com?foo=bar http://example.com/#foo=bar http://example.com#foo=bar http://a.in HTTP://GOOGLE.COM http://example.invalid % don't restrict root domain when schema exists http://inrgess2 % Allow local domains to end with digit http://999 % ..and start with digit, and have digits only http://host-name % local domain with dash >>example.com % markdown blockquote >>http://example.com % markdown blockquote http://lyricstranslate.com/en/someone-you-നിന്നെ-പോലൊരാള്‍.html % With control character % % localhost (only with protocol allowed) % //localhost //test.123 http://localhost:8000? % % Other protocols % My ssl https://example.com site My ftp://example.com site % % Neutral proto % My ssl //example.com site % % IPs % 4.4.4.4 192.168.1.1/abc % % Fuzzy % test.example@http://vk.com text:http://example.com/ google.com google.com: // no port s.l.o.w.io a-b.com GOOGLE.COM. google.xxx // known tld % % Correct termination for . , ! ? [] {} () "" '' % (Scoped http://example.com/foo_bar) http://example.com/foo_bar_(wiki) http://foo.com/blah_blah_[other] http://foo.com/blah_blah_{I'm_king} http://foo.com/blah_blah_I'm_king http://www.kmart.com/bestway-10'-x-30inch-steel-pro-frame-pool/p-004W007538417001P http://foo.com/blah_blah_"doublequoted" http://foo.com/blah_blah_'singlequoted' (Scoped like http://example.com/foo_bar) [Scoped like http://example.com/foo_bar] {Scoped like http://example.com/foo_bar} "Quoted like http://example.com/foo_bar" 'Quoted like http://example.com/foo_bar' [example.com/foo_bar.jpg)] http://example.com/foo_bar.jpg. http://example.com/foo_bar/. http://example.com/foo_bar, https://github.com/markdown-it/linkify-it/compare/360b13a733f521a8d4903d3a5e1e46c357e9d3ce...f580766349525150a80a32987bb47c2d592efc33 http://example.com/foo_bar... http://172.26.142.48/viewerjs/#../0529/slides.pdf http://example.com/foo_bar.. http://example.com/foo_bar?p=10. https://www.google.ru/maps/@59.9393895,30.3165389,15z?hl=ru https://www.google.com/maps/place/New+York,+NY,+USA/@40.702271,-73.9968471,11z/data=!4m2!3m1!1s0x89c24fa5d33f083b:0xc80b8f06e177fe62?hl=en https://www.google.com/analytics/web/?hl=ru&pli=1#report/visitors-overview/a26895874w20458057p96934174/ http://business.timesonline.co.uk/article/0,,9065-2473189,00.html http://example.com/123! http://example.com/foo--bar % some sites have links with trailing dashes http://www.bloomberg.com/news/articles/2015-06-26/from-deutsche-bank-to-siemens-what-s-troubling-germany-inc- http://example.com/foo-with-trailing-dash-dot-. . . . . % % Emails % test."foo".bar@gmail.co.uk! name@example.com >>name@example.com % markdown blockquote mailto:name@example.com MAILTO:NAME@EXAMPLE.COM mailto:foo_bar@example.com foo+bar@gmail.com 192.168.1.1@gmail.com mailto:foo@bar % explicit protocol make it valid (foobar email@example.com) (email@example.com foobar) (email@example.com) % % International % http://✪df.ws/123 http://xn--df-oiy.ws/123 a.ws ➡.ws/䨹 example.com/䨹 президент.рф % Links below provided by diaspora* guys, to make sure regressions will not happen. % Those left here for historic reasons. http://www.bürgerentscheid-krankenhäuser.de http://www.xn--brgerentscheid-krankenhuser-xkc78d.de http://bündnis-für-krankenhäuser.de/wp-content/uploads/2011/11/cropped-logohp.jpg http://xn--bndnis-fr-krankenhuser-i5b27cha.de/wp-content/uploads/2011/11/cropped-logohp.jpg http://ﻡﻮﻘﻋ.ﻭﺯﺍﺭﺓ-ﺍﻼﺘﺻﺍﻼﺗ.ﻢﺻﺭ/ http://xn--4gbrim.xn----ymcbaaajlc6dj7bxne2c.xn--wgbh1c/ % % Not links % example.invalid example.invalid/ http://.example.com http://-example.com hppt://example.com example.coma -example.coma foo.123 http://a.b--c.de/ % `--` disabled, because collision possible localhost % only with protocol allowed localhost/ ///localhost % 3 '/' not allowed ///test.com //test % Don't allow single level protocol-less domains to avoid false positives _http://example.com _//example.com _example.com http://example.com_ @example.com node.js and io.js http:// http://. http://.. http://# http://## http://? http://?? google.com:500000 // invalid port show image.jpg path:to:file.pm /path/to/file.pl % % Not IPv4 % 1.2.3.4.5 1.2.3 1.2.3.400 1000.2.3.4 a1.2.3.4 1.2.3.4a % % Not email % foo@bar % Should be at second level domain & with correct tld mailto:bar

Conflict with Angular

Should ignore any links in {{...}}

{{someVar}} {{someVar.com.tw}} {{"http://example.com"}}

Domain may contain dash

http://free-group.eu/ http://free-group.eu:8080/ http://free-group.eu:8080/?search&follow#id http://free-group.eu:8080/dash-in-path?search&follow#id

Support IP address

110.110.110.110 12345.124.12.1 001.000.000.000 0.0.0.1 127.0.0.1 127.0.0.01 1271.0.0.1 0.0.0.256 0.0.0.255

Dealing with wbr tag

http://time.com/money/3305393/new-taxi-service-is-like-uber-but-for-women-only/ https://soundcloud.com/uscer/53-girls https://soundcloud.com/uscer/53-girls

Dealing with parenthesis

(http://www.example.com/) (Some text... http://www.example.com/) http://www.example.com/(Some text...) http://www.example.com/(Some) http://en.wikipedia.org/wiki/Darwin_(operating_system) (http://www.foobar.com/test) http://www.foobar.com/test). http://www.asianewsphoto.com/(S(neugxif4twuizg551ywh3f55))

Unicode issue

https://github.com/gorhill/uBlock/wiki/Does-µBlock-blocks-ads-or-just-hide-them%3F
http://www.bücher.ch
http://www.example.com/exämple/
http://www.example.com/example/exämple.php?test=täst
http://www.example.com/example/example.php?test=täst

Comma

http://www.example.com/test,example.html http://www.example.com/test.html, (comma not to be linkified) http://www.example.com/test,example.html, (second comma not to be linkified) http://www.tomshardware.com/reviews/caselabs-ama-recap-jan-2015,4029.html

Blacklist

http://www.example.com/

Whitelist

http://www.example.com/
http://www.example.com/

Contenteditable

http://www.example.com/

Valid characters

http://example.com/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-.~!$&*+;=:@%/?#(),'[]

Question mark

is it not foobar.com?

BBCode

[img]http://example.com/test.png[/img]
[url]http://example.com/test.png[/url]
http://example.com/test.png[b]something-else[/b]

Random tests

www.vice.news
http://forum.gamer.com.tw/C.php?bsn=12259&snA=264382&tnum=6&subbsn=18
_www.example.com
onenote:#Books&section-id={F1580D31-86DD-4975-9169-CBB0C3846D9D}&page-id={39F02142-9AAA-49C6-AD26-E47114E2BB1C}&end&base-path=https://d.docs.live.net/dc516d79aca53670/OneNote/@Home/Tab9.one
evernote:///view/[userId]/[shardId]/[noteGuid]/[noteGuid]/
magnet:?xt=urn:btih:c12fe1c06bba254a9dc9f519b335aa7c1367a88a&dn
"3.141592653589793238462643383279502884197169399375105820974944592.com" or "yesno.wtf"
-http://example.com

Bad TLDs

www.example.free
www.example.zip
www.example.call
www.example.constructor