带有引号的文件名的正则表达式

sle*_*led 5 regex filenames multipart

我正在尝试正确解析multipart/form-data请求,除非上传的文件包含双引号,否则它会起作用.

请求看起来像(摘自wireshark):

Content-Disposition: form-data; name="file"; filename="b'e\"e.JPG"
Run Code Online (Sandbox Code Playgroud)

因此,该文件实际上被称为b'e"e.jpg在我的本地文件系统上.浏览器正确地转义了引号.

我想b'e\"e.JPG从这个字符串中获取文件名.

我找到了一个正则表达式,用于抓取带有转义引号的带引号的字符串:

/"[^"\\]*(\\.[^"\\]*)*"/i
Run Code Online (Sandbox Code Playgroud)

(来源http://www.regular-expressions.info/regexbuddy/stringescapedmulti.html)

正则表达式在应用于字符串"b'e\"e.JPG"时非常有效,但是当我尝试将其范围仅限于filename=部分时,例如:

/filename="[^"\\]*(\\.[^"\\]*)*"/i
Run Code Online (Sandbox Code Playgroud)

我不会得到任何结果.

任何帮助将非常感激

编辑:

我正在使用JavaScript,所以我把正则表达式放在js小提琴上:http://jsfiddle.net/hDBcs/

谢谢!

西蒙

Kar*_*lis 4

问题可能是您没有使用括号来获取所需的零件:

/filename="([^"\\]*(?:\\.[^"\\]*)*)"/i
Run Code Online (Sandbox Code Playgroud)