2011-08-18 39 views
40

thể trùng lặp:
Which characters make a url invalid?Ký tự nào hợp lệ trong URL?

Tôi đang cố gắng để loại bỏ các phần không URL của một chuỗi lớn. Hầu hết các regex tôi tìm thấy giống như [A-Za-z0-9-_.!~*'()], nhưng có nhiều thứ có thể chứa url hơn. Giống như http://127.0.0.1:8080/test?v=123#this ví dụ:

Vì vậy, các ký tự mới nhất cho URL hợp lệ là gì?

EDIT:

Họ dường như là:

A-Za-z0-9 -._ ~:?!/# [] @ $ & '() * +,; = và% tiếp theo giá trị hex

+3

Bạn đã xem RFC chưa? http://www.faqs.org/rfcs/rfc1738.html – ale

Trả lời

74

Tất cả các chi tiết đẫm máu có thể được tìm thấy trong các RFC hiện về chủ đề này: RFC 3986 (Uniform Resource Identifier (URI): Generic Syntax)

Dựa trên this related answer, bạn đang nhìn vào một danh sách giống như: A-Z, a-z, 0-9, -, ., _, ~, :, /, ?, #, [, ], @, !, $, &, ', (, ), *, +, , , ;=. Mọi thứ khác phải là url-encoded. Ngoài ra, một số các ký tự này chỉ có thể tồn tại ở các điểm rất cụ thể trong một URI, RFC có tất cả các chi tiết cụ thể này.

+5

Lưu ý: danh sách này không bao gồm dấu phần trăm – thomasrutter

+4

Đó là @thomasrutter chính xác,% được sử dụng để mã hóa url. Một% cần được biểu diễn bằng% 25 để được sử dụng trong URI. Từ RFC: Vì ký tự phần trăm ("%") đóng vai trò chỉ báo cho octet được mã hóa phần trăm, nó phải được mã hóa phần trăm là "% 25" cho octet đó được sử dụng làm dữ liệu trong URI. – ckittel

+6

Chỉ cần đề cập đến một số ('/', '?', '#', '&', '+') Trong khi hợp lệ, phân phát chức năng cụ thể trong URL có thành phần truy vấn và không được coi là chars thông thường – kofifus

Các vấn đề liên quan