89 votes

Quels sont les caractères valides dans une URL ?

J'essaie de supprimer la partie non URL d'une grande chaîne. La plupart des regex que j'ai trouvées sont du type [A-Za-z0-9-_.!~*'()] mais il y a plus de choses qu'une url peut contenir. Comme http://127.0.0.1:8080/test?v=123#this par exemple

Quels sont donc les derniers caractères d'une URL valide ?

5 votes

Avez-vous regardé le RFC ? faqs.org/rfcs/rfc1738.html

0 votes

Il y a ce qui est techniquement une URL valide et ce qui est réellement utilisé comme URL aujourd'hui. Seulement 25% de l'internet est écrit en anglais. #Les langues n°2 et n°4 sont le chinois et l'arabe. Cette réponse à une autre question résume bien la situation : stackoverflow.com/a/36667242/1128668

148voto

ckittel Points 2819

Tous les détails sanglants peuvent être trouvés dans le RFC actuel sur le sujet : RFC 3986 (Uniform Resource Identifier (URI) : Generic Syntax)

Sur la base de cette réponse connexe vous avez devant vous une liste qui ressemble à ceci : A-Z , a-z , 0-9 , - , . , _ , ~ , : , / , ? , # , [ , ] , @ , ! , $ , & , ' , ( , ) , * , + , , , ; , % y = . Tout le reste doit être url-encodé . En outre, certains de ces caractères ne peuvent exister qu'à des endroits très spécifiques dans un URI et, en dehors de ces endroits, ils doivent être codés en url (par exemple, le code de l'url). % ne peut être utilisé qu'en conjonction avec l'encodage url, comme dans l'exemple suivant %20 ), le RFC contient toutes ces spécificités.

10 votes

Note : cette liste ne comprend pas le signe pour cent.

9 votes

C'est exact @thomasrutter, un % est utilisé pour le codage url. Un % doit être représenté comme %25 pour être utilisé dans un URI. Extrait du RFC : Comme le caractère pour cent ("%") sert d'indicateur pour les octets codés en pourcentage, il doit être codé en pourcentage sous la forme "%25" pour que cet octet soit utilisé comme donnée dans un URI.

10 votes

Il convient de préciser que certains de ces caractères ("/", " ?", "#", "&", "+"), bien que valides, remplissent une fonction particulière dans une URL avec un composant de requête et ne sont pas traités comme de simples caractères ordinaires.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X