Quali caratteri rendono un URL non valido?
Sono URL validi?
esempio.com/file[/].html
.http://example.com/file[/].html
.In generale gli URI come definiti da RFC 3986 (vedi Sezione 2: Caratteri) possono contenere uno qualsiasi dei seguenti 84 caratteri:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~:/?#[]@!$&'()*+,;=
Si noti che questa lista non indica dove nell'URI possono trovarsi questi caratteri.
Qualsiasi altro carattere deve essere codificato con la codifica percentuale (%
hh
). Ogni parte dell'URI ha ulteriori restrizioni su quali caratteri devono essere rappresentati da una parola codificata in percentuale.
Tutti i caratteri validi che possono essere usati in un URI (un URL è un tipo di URI) sono definiti in RFC 3986.
Tutti gli altri caratteri possono essere usati in un URL a condizione che siano "URL Encoded" prima. Questo comporta la modifica del carattere non valido per specifici "codici" (di solito nella forma del simbolo di percentuale (%) seguito da un numero esadecimale).
Questo link, HTML URL Encoding Reference, contiene una lista delle codifiche per i caratteri non validi.
Non è proprio una risposta alla tua domanda, ma convalidare gli url è davvero una seria p.i.t.a Probabilmente è meglio convalidare il nome del dominio e lasciare la parte di query dell'url. Questa è la mia esperienza. Si potrebbe anche ricorrere al ping dell'URL e vedere se risulta una risposta valida, ma questo potrebbe essere troppo per un compito così semplice.
Le espressioni regolari per rilevare gli url sono abbondanti, cercate su Google :)