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

时间:2011-07-26 13:44:47

标签: regex filenames multipart

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

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

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

因此该文件在我的本地文件系统中实际上被称为“e.jpg”。浏览器正确地转义了引号。

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

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

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

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

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

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

我不会得到任何结果。

任何帮助都会非常感激

修改

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

谢谢!

西蒙

1 个答案:

答案 0 :(得分:4)

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

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