【发布时间】:2011-10-13 10:37:33
【问题描述】:
我正在尝试正确解析 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/
谢谢!
西蒙
【问题讨论】:
-
使用 RegexBuddy 进行快速测试对我来说效果很好,Regex 的其他部分是否可能会搞砸?
-
嗨,感谢您的测试 :) 但不幸的是,在 javascript 中它不起作用。我在 jsFiddle 上添加了一个快速测试(见编辑)。