我有一些基于文件扩展名表达式的Postfix块附件:
/^Content-(Disposition|Type).*name\s*=\s*"?(.*(\.|=2E)(
ade|adp|asp|bas|bat|chm|cmd|com|cpl|crt|dll|exe|
hlp|ht[at]|
inf|ins|isp|jse?|lnk|md[betw]|ms[cipt]|nws|
\{[[:xdigit:]]{8}(?:-[[:xdigit:]]{4}){3}-[[:xdigit:]]{12}\}|
ops|pcd|pif|prf|reg|sc[frt]|sh[bsm]|swf|
vb[esx]?|vxd|ws[cfh]))(\?=)?"?\s*(;|$)/x
如您所见,这与Content-Disposition: attachment; filename=anythng.xyz
匹配
其中xyz可能是上面给出的大量文件扩展名(bat,com,exe,sh ...)。
当附加文件没有扩展名时,我正在徘徊如何包含案例?
通常存在没有扩展名的二进制文件,* nix OS是将没有扩展名的文件计为可能的二进制文件。
所以我希望在给定的表达式中包含匹配无扩展名文件名字符串的选项,如:Content-Disposition: attachment; filename=anythng
怎么样?感谢。
答案 0 :(得分:0)
无扩展名文件是没有句点的文件,所以
…name\s*=\s*[^.]+$
会这样做。但请注意,这与System.Controller
不匹配 - 其中一个句点已作为名称的一部分包含在内。
答案 1 :(得分:0)
您可以使用此https://regex101.com/r/mI9qC6/1
^Content-(Disposition|Type).*name\s*=\s*"?([^.]*((\.|=2E)(
ade|adp|asp|bas|bat|chm|cmd|com|cpl|crt|dll|exe|
hlp|ht[at]|
inf|ins|isp|jse?|lnk|md[betw]|ms[cipt]|nws|
\{[[:xdigit:]]{8}(?:-[[:xdigit:]]{4}){3}-[[:xdigit:]]{12}\}|
ops|pcd|pif|prf|reg|sc[frt]|sh[bsm]|swf|
vb[esx]?|vxd|ws[cfh]))?)(\?=)?"?\s*(;|$)