=== URLs which are handled OK so far === u http://test.com u m 111111111111111 m u HTTP://UPCASE.UP u m 1111111111111111 m u http: u m 00000 m u mailto: u m 0000000 m Preceding none-whitespace characters: u !http://test.com u m 0111111111111111 m u "http://test.com u m 0111111111111111 m u #http://test.com u m 0111111111111111 m u $http://test.com u m 0111111111111111 m u %http://test.com u m 0111111111111111 m u &http://test.com u m 0111111111111111 m u 'http://test.com u m 0111111111111111 m u (http://test.com u m 0111111111111111 m u )http://test.com u m 0111111111111111 m u *http://test.com u m 0111111111111111 m u +http://test.com u m 0111111111111111 m u ,http://test.com u m 0111111111111111 m u -http://test.com u m 0111111111111111 m u .http://test.com u m 0111111111111111 m u /http://test.com u m 0111111111111111 m u 1http://test.com u m 0000000000000000 m u 9http://test.com u m 0000000000000000 m u :http://test.com u m 0111111111111111 m u ;http://test.com u m 0111111111111111 m u http://test.com u m 0111111111111111 m u ?http://test.com u m 0111111111111111 m u @http://test.com u m 0111111111111111 m u Ahttp://test.com u m 0000000000000000 m u Zhttp://test.com u m 0000000000000000 m u [http://test.com u m 0111111111111111 m u \http://test.com u m 0111111111111111 m u ]http://test.com u m 0111111111111111 m u ^http://test.com u m 0111111111111111 m u _http://test.com u m 0000000000000000 m u `http://test.com u m 0111111111111111 m u ahttp://test.com u m 0000000000000000 m u zhttp://test.com u m 0000000000000000 m u {http://test.com u m 0111111111111111 m u |http://test.com u m 0111111111111111 m u }http://test.com u m 0111111111111111 m u ~http://test.com u m 0111111111111111 m Query parsing: u https://duckduckgo.com/?q=windows+delete+"GameBarPresenceWriter.exe" u m 11111111111111111111111111111111111111111111111111111111111111111111 m u "https://duckduckgo.com/?q=windows+delete+"GameBarPresenceWriter.exe"" u m 0111111111111111111111111111111111111111111111111111111111111111111110 m u "https://duckduckgo.com/?q=windows+delete+"GameBarPresenceWriter.exe" u m 011111111111111111111111111111111111111111111111111111111111111111111 m u "https://duckduckgo/com/?q=windows+delete+GameBarPresenceWriter.exe" u m 01111111111111111111111111111111111111111111111111111111111111111110 m u "https://duckduckgo.com/?q=windows+delete+""GameBarPresenceWriter.exe" u m 0111111111111111111111111111111111111111111100000000000000000000000000 m u https://www.youtube.com/watch?v=VmcftreqQ6E&list=PnQIRE5O5JpiLL&index=xxx u m 1111111111111111111111111111111111111111111111111111111111111111111111111 m u https://example.com/#/app/0?context u m 11111111111111111111111111111111111 m u https://example.com#/example/app/0?context u m 111111111111111111111111111111111111111111 m Space detection: u "http://github.com/notepad-plus-plus/notepad-plus-plus" u m 0111111111111111111111111111111111111111111111111111110 m u "https://github.com /notepad-plus-plus/notepad-plus-plus" u m 011111111111111111100000000000000000000000000000000000000 m u "https://github.com/notepad plus plus/notepad-plus-plus" u m 01111111111111111111111111100000000000000000000000000000 m Unwanted trailing character removal: u (https://github.com/notepad-plus-plus/notepad-plus-plus) u m 01111111111111111111111111111111111111111111111111111110 m u [https://github.com/notepad-plus-plus/notepad-plus-plus] u m 01111111111111111111111111111111111111111111111111111110 m u https://github.com/notepad-plus-plus/notepad-plus-plus; u m 1111111111111111111111111111111111111111111111111111110 m u https://github.com/notepad-plus-plus/notepad-plus-plus? u m 1111111111111111111111111111111111111111111111111111110 m u https://github.com/notepad-plus-plus/notepad-plus-plus! u m 1111111111111111111111111111111111111111111111111111110 m u https://github.com/notepad-plus-plus/notepad-plus-plus# u m 1111111111111111111111111111111111111111111111111111110 m u http://github.com/notepad-plus-plus/notepad-plus-plus#fragment u m 11111111111111111111111111111111111111111111111111111111111111 m u (e.g., https://en.wikipedia.org/wiki/Saw_(2003_film))? u m 000000011111111111111111111111111111111111111111111100 m u (https://en.wikipedia.org/wiki/Saw_(2003_film)) u m 01111111111111111111111111111111111111111111110 m u (https://en.wikipedia.org/wiki/Saw_2003_film) u m 011111111111111111111111111111111111111111110 m u [https://en.wikipedia.org/wiki/Saw_[2003_film]] u m 01111111111111111111111111111111111111111111110 m International characters: u https://apache-windows.ru/как-установить-сервер-apache-c-php-mysql-и-phpmyadmin-на-windows/ u m 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 m u https://www.rnids.rs/национални-домени/регистрација-националних-домена u m 1111111111111111111111111111111111111111111111111111111111111111111111 m u https://www.morfix.co.il/שלום u m 11111111111111111111111111111 m u https://www.amazon.fr/GRÜNTEK-Ebrancheur-Cisailles-crémaillère-SATISFAIT/dp/B01COZUA4E/ u m 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 m u https://www.amazon.fr/Gardena-coupe-branches-TeleCut-520-670-télescopiques/dp/B07JLJ4N44/ u m 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 m Instagram links: u https://ig.com/?query=c761&vars={"id":"0815","first":100} u m 111111111111111111111111111111111111111111111111111111111 m u {https://ig.com/?query=c761&vars={"id":"0815","first":100}} u m 01111111111111111111111111111111111111111111111111111111110 m u [https://ig.com/?query=c761&vars={"id":"0815","first":100}] u m 01111111111111111111111111111111111111111111111111111111110 m u "https://ig.com/?query=c761&vars={"id":"0815","first":100}" u m 01111111111111111111111111111111111111111111111111111111110 m Links in LaTeX: u \href{https://weblink.com/}{click me} u m 0000001111111111111111111100000000000 m u \href{https://ig.com/?query=c761&vars={"id":"0815","first":100}}{click me} u m 00000011111111111111111111111111111111111111111111111111111111100000000000 m ======== Quotation mark - forbidden in name and path (delimiter) - parsed in query part as quoting character, overriding all other quoting characters u http://xxx.xxx/xxx"xxx" u m 11111111111111111100000 m u http://xxx.xxx/?q="A"+"B"" u m 11111111111111111111111110 m u http://xxx.xxx/?q="A'+'B{}`'"" u m 111111111111111111111111111110 m ======== Apostrophe - allowed unrestricted in name and path - parsed in query part as quoting character, overriding all other quoting characters u https://en.wikipedia.org/wiki/Murphy's_law u m 111111111111111111111111111111111111111111 m u http://xxx.xxx/xxx'xxx' u m 11111111111111111111111 m u http://xxx.xxx/xxx'xxx'' u m 111111111111111111111111 m u http://xxx.xxx/?q='A'+'B'' u m 11111111111111111111111110 m u http://xxx.xxx/?q='A'+'B'' u m 11111111111111111111111110 m u http://xxx.xxx/?q='A'+'B"{}`'' u m 111111111111111111111111111110 m ======== Grave accent - allowed unrestricted in name and path - parsed in query part as quoting character, overriding all other quoting characters u http://xxx.xxx/Tom`s_sisters u m 1111111111111111111111111111 m u http://xxx.xxx/Tom`s%20sisters` u m 1111111111111111111111111111111 m u http://xxx.xxx/Tom`s%20sisters`` u m 11111111111111111111111111111111 m u http://xxx.xxx/?q=`A`+`B` u m 1111111111111111111111111 m u http://xxx.xxx/?q=`A`+`B`` u m 11111111111111111111111110 m u http://xxx.xxx/?q=`A"{}()'`` u m 1111111111111111111111111110 m ======== Parentheses - allowed in name and path - closing parenthesis at end of path is removed, if there are no other parentheses in path, except pairing parentheses - parsed in query part as quoting character, overriding all other quoting characters - no other parentheses in path, remove last closing parenthesis u http://xxx.xxx/xxx) u m 1111111111111111110 m - pairing parentheses in path: remove last closing unpaired parenthesis u http://xxx.xxx/xxx(xxx)) u m 111111111111111111111110 m - pairing parentheses in path: remove last closing unpaired parenthesis u http://xxx.xxx/xxx((xxx))) u m 11111111111111111111111110 m - pairing parenthesis in path: keep last closing paired parenthesis u http://xxx.xxx/xxx(xxx) u m 11111111111111111111111 m - pairing parentheses in path: remove last closing unpaired parenthesis u http://xxx.xxx/xxx()xxx) u m 111111111111111111111110 m - arbitrary parentheses in path: keep last closing parenthesis u http://xxx.xxx/xxx)) u m 11111111111111111111 m - arbitrary parentheses in path: keep last closing parenthesis u http://xxx.xxx/xxx)(xxx) u m 111111111111111111111111 m - arbitrary parentheses in path: keep last closing parenthesis u http://xxx.xxx/xxx)(xxx)) u m 1111111111111111111111111 m - arbitrary parentheses in path: keep last closing parenthesis u http://xxx.xxx/xxx((xxx) u m 111111111111111111111111 m - arbitrary parentheses in path: keep last closing parenthesis u http://xxx.xxx/xxx)((xxx) u m 1111111111111111111111111 m - parentheses in query part: end after last closing quote of query part u http://xxx.xxx/xxx?q=(xxx)) u m 111111111111111111111111110 m - parentheses in query part: end after last closing quote of query part u http://xxx.xxx/xxx?q=(xxx)( u m 111111111111111111111111110 m - parentheses in query part: end after last closing quote of query part u http://xxx.xxx/xxx?q=(xxx)( u m 111111111111111111111111110 m - parentheses in query part: end after last closing quote of query part u http://xxx.xxx/xxx?q=(xxx)&(xxx)( u m 111111111111111111111111111111110 m ======== Square brackets - allowed in name and path - closing square bracket at end of path is removed, if there are no other square brackets in path, except pairing square brackets - parsed in query part as quoting characters, overriding all other quoting characters - no other square brackets in path, remove last closing square bracket u http://xxx.xxx/xxx] u m 1111111111111111110 m - pairing square brackets in path: remove last closing unpaired square bracket u http://xxx.xxx/xxx[xxx]] u m 111111111111111111111110 m - pairing square brackets in path: remove last closing unpaired square bracket u http://xxx.xxx/xxx[[xxx]]] u m 11111111111111111111111110 m - pairing square brackets in path: keep last closing paired square bracket u http://xxx.xxx/xxx[xxx] u m 11111111111111111111111 m - pairing square brackets in path: remove last closing unpaired square bracket u http://xxx.xxx/xxx[]xxx] u m 111111111111111111111110 m - arbitrary square brackets in path: keep last closing square bracket u http://xxx.xxx/xxx]] u m 11111111111111111111 m - arbitrary square brackets in path: keep last closing square bracket u http://xxx.xxx/xxx][xxx] u m 111111111111111111111111 m - arbitrary square brackets in path: keep last closing square bracket u http://xxx.xxx/xxx][xxx]] u m 1111111111111111111111111 m - arbitrary square brackets in path: keep last closing square bracket u http://xxx.xxx/xxx[[xxx] u m 111111111111111111111111 m - arbitrary square brackets in path: keep last closing square bracket u http://xxx.xxx/xxx][[xxx] u m 1111111111111111111111111 m - square brackets in query part: end after last closing quote of query part u http://xxx.xxx/xxx?q=[xxx]] u m 111111111111111111111111110 m - square brackets in query part: end after last closing quote of query part u http://xxx.xxx/xxx?q=[xxx][ u m 111111111111111111111111110 m - square brackets in query part: end after last closing quote of query part u )http://xxx.xxx/xxx?q=[xxx][ u m 0111111111111111111111111110 m - square brackets in query part: end after last closing quote of query part u http://xxx.xxx/xxx?q=[xxx]&[xxx][ u m 111111111111111111111111111111110 m ======== Curly brackets - forbidden in name and path, because of LaTeX - parsed in query part as quoting characters, overriding all other quoting characters u http://xxx.xxx/xxx{xxx}} u m 111111111111111111000000 m u http://xxx.xxx/xxx{xxx} u m 11111111111111111100000 m u http://xxx.xxx/xxx?q={xxx}} u m 111111111111111111111111110 m u http://xxx.xxx/xxx?q={xxx};{"[]()''`}} u m 11111111111111111111111111111111111110 m ======== Mail: u mailto:don.h@free.fr u m 11111111111111111111 m u u m 000000000000000 m u u m 0111111111111111111110 m u http:don.h@free.fr u m 000000000000000000 m FTP: u u m 01111111111111111111111111111111111110 m u ftp://host:444/0a_gopher_selector%09%09some_gplus_stuff u m 1111111111111111111111111111111111111111111111111111111 m u ftp://host:abc/0a_gopher_selector%09%09some_gplus_stuff u m 0000000000000000000000000000000000000000000000000000000 m FILE: u file://Hello%20world.txt u m 111111111111111111111111 m u "file://Hello%20world.txt" u m 01111111111111111111111110 m u "file://Hello world.txt" u m 011111111111100000000000 m u file://127.0.0.1/c$/Tools\Npp%20Test%20Data/Test3/3812.pdf u m 1111111111111111111111111111111111111111111111111111111111 m