2011-08-18 16 views
40

Powiel możliwe:
Which characters make a url invalid?Jakie znaki są poprawne w adresie URL?

Próbuję usunąć część non-URL wielkiego łańcucha. Większość wyrażeń, które znalazłem, jest podobna do [A-Za-z0-9-_.!~*'()], ale jest więcej rzeczy, które mogą zawierać adresy URL. Podobnie jak http://127.0.0.1:8080/test?v=123#this na przykład

Jakie są więc najnowsze znaki dla prawidłowego adresu URL?

EDIT:

Wydają się być:

a-zA-Z0-9 -._ ~: /! # [] @ $ & „() * +, = a następnie% wartości hex

+3

Czy obejrzałeś RFC? http://www.faqs.org/rfcs/rfc1738.html – ale

Odpowiedz

74

wszystkie krwawe szczegóły można znaleźć w bieżącym RFC na temat: RFC 3986 (Uniform Resource Identifier (URI): Generic Syntax)

oparciu o this related answer, jesteś patrząc na lista, która wygląda następująco: A-Z, a-z, 0-9, -, ., _, ~, :, /, ?, #, [, ], @, !, $, &, ', (, ), *, +, , , ; i =. Cała reszta musi być url-encoded. Ponadto niektóre z tych znaków mogą istnieć tylko w bardzo konkretnych miejscach w URI, RFC ma wszystkie te szczegóły.

+5

Uwaga: ta lista nie zawiera znaku procentu – thomasrutter

+4

To jest poprawne @thomasrutter,% służy do kodowania adresów URL. % Musi być reprezentowany jako% 25 do użycia w URI. Ze specyfikacji RFC: Ponieważ znak procentu ("%") służy jako wskaźnik dla oktetów kodowanych procentowo, musi być zakodowany w procentach jako "% 25", aby ten oktet mógł być używany jako dane w URI. – ckittel

+6

Wystarczy wspomnieć, że niektóre z nich ("/", "?", "#", "&", "+"), Gdy są prawidłowe, służą określonej funkcji w adresie URL z komponentem zapytania i nie są traktowane jako zwykłe znaki – kofifus

Powiązane problemy