Regex для имени файла с кавычками в multipart - PullRequest
5 голосов
/ 26 июля 2011

Я пытаюсь правильно проанализировать запрос multipart / form-data, он работает, если только загружаемый файл не содержит двойных кавычек.

Запрос выглядит (отрывок из Wireshark):

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

Таким образом, файл фактически называется b'e "e.jpg в моей локальной файловой системе. Браузер правильно экранирует кавычки.

Я хочу извлечь имя файла b'e\"e.JPG из этой строки.

Я нашел регулярное выражение для захвата строк в кавычках с экранированными кавычками внутри:

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

(источник http://www.regular -expressions.info / regexbuddy / stringescapedmulti.html )

Регулярное выражение прекрасно работает при применении к строке "b'e\"e.JPG", но когда я пытаюсь охватить его только в части filename=, например:

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

Я не получу никаких результатов.

Любая помощь будет очень признательна

Редактировать

Я работаю с JavaScript, поэтому я поставил регулярное выражение в js fiddle: http://jsfiddle.net/hDBcs/

Спасибо!

Simon

1 Ответ

4 голосов
/ 26 июля 2011

Возможно, проблема в том, что вы не используете скобки для получения необходимых деталей:

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