2011-07-26 19 views
5

Tôi đang cố gắng phân tích cú pháp yêu cầu nhiều phần/biểu mẫu dữ liệu đúng cách, nó hoạt động trừ khi tệp được tải lên có chứa dấu ngoặc kép.Regex cho tên tập tin có dấu ngoặc kép trong multipart

Yêu cầu trông giống như (trích đoạn từ Wireshark):..

Content-Disposition: form-data; name="file"; filename="b'e\"e.JPG" 

Vì vậy, các tập tin được thực sự gọi là b'e "e.jpg trên hệ thống tập tin địa phương của tôi Trình duyệt thoát các dấu ngoặc kép đúng

tôi muốn lấy tên tập tin b'e\"e.JPG ra khỏi chuỗi này

tôi tìm thấy một regex cho grabbing chuỗi trích dẫn với dấu ngoặc kép trốn bên trong:.

/"[^"\\]*(\\.[^"\\]*)*"/i 

(nguồn http://www.regular-expressions.info/regexbuddy/stringescapedmulti.html)

Các regex hoạt động hoàn hảo khi được sử dụng trên chuỗi "b'e\"e.JPG" nhưng khi tôi cố gắng phạm vi nó chỉ trên phần, như:

/filename="[^"\\]*(\\.[^"\\]*)*"/i 

tôi sẽ không nhận được bất kỳ các kết quả.

Bất kỳ trợ giúp sẽ được đánh giá cao thực sự

Sửa:

Tôi đang làm việc với Javascript, vì vậy tôi đặt regex trên fiddle js: http://jsfiddle.net/hDBcs/

Cảm ơn!

Simon

+0

Chỉ cần một thử nghiệm nhanh với RegexBuddy hoạt động tốt đối với tôi, là có một phần khác của Regex điều đó có thể làm rối tung nó lên? – CodingGorilla

+0

Xin chào, cảm ơn bạn đã kiểm tra :) nhưng trong javascript nó không hoạt động không may. Tôi đã thêm một bài kiểm tra nhanh trên jsFiddle (xem phần chỉnh sửa). – sled

Trả lời

4

Có lẽ vấn đề là bạn không sử dụng dấu ngoặc để có được bộ phận cần thiết:

/filename="([^"\\]*(?:\\.[^"\\]*)*)"/i 
+0

cảm ơn bạn rất nhiều! – sled