从点击中提取文档扩展名

Extract document extensions from clicks

我正在使用 this technique 提取我的 SharePoint 网站中的点击事件。它使用 jquery 和正则表达式来捕获点击并将它们作为事件报告给 google 分析。

我也刚刚成为正则表达式的新手 -- 它对我来说开始有些意义了,但我还有很多东西要学。就这样吧。

根据上面列出的网站,我有一份我感兴趣的文件类型的预批准列表。

var filetypes = /\.(zip|pdf|doc.*|xls.*|ppt.*|mp3|txt|wma|mov|avi|wmv|flv|wav|jpg)$/i;

但它并没有像我需要的那样工作。使用 $ 我假设它试图匹配到行尾。但通常在 SharePoint 中我们会得到这样的链接:

example.org/sharepoint/_layouts/15/wopiframe.aspx?sourcedoc=/sharepointlibrary/the%20document%20name.docx&action=default&defaultitemopen=1

我遇到的两个问题是,我不能指望文件名在查询或散列之前,也不能指望它在末尾。以及所有不同的 Microsoft Office 扩展。

我发现 this thread 提取扩展,但它似乎无法正常工作。

我整理了这个版本

var filetypes = \.(zip|pdf|doc|xls|ppt|mp3|txt|wma|mov|avi|wmv|flv|wav|jpg)[A-Za-z]*

我将办公位从 doc.* 更改为普通的 doc 并在之后添加了可选的字母字符。并删除了 $ 结束锚点。它似乎与我的测试样本一起工作,但我不知道是否有我不明白的陷阱。

这似乎是一个好的解决方案,或者是否有更好的方法来获取预定的扩展名列表(包括例如 Office 变体,如 doc、docx、docm),该列表位于查询字符串之前或可能是一个查询字符串中的参数?

我会选择以下匹配文件名和扩展名的文件:

/[^/]+\.(zip|pdf|doc[xm]?|xlsx?|ppt|mp3|txt|wma|mov|avi|wmv|flv|wav|jpg)/i

根据您的示例输出 the%20document%20name.docx

它可能无法处理其他格式,但应该可以满足您的需求。