关于javascript:从点击中提取文档扩展名

Extract document extensions from clicks

我正在使用此技术来提取SharePoint网站中的点击事件。它使用jquery和正则表达式来捕获点击并将其作为事件报告给Google Analytics。

我也刚刚接过正则表达式的全新手 - 它开始对我有所帮助,但我还有很多需要学习的东西。所以这里。

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

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

但它并不像我需要的那样工作。随着$ I假设它正在尝试匹配到行尾。但通常在SharePoint中我们得到这样的链接:

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

我遇到的两个问题是,我不能指望在查询或哈希之前的文件名,我不能指望它在最后。以及所有不同的Microsoft Office扩展。

我发现这个线程在提取扩展,但它似乎无法正常工作。

我把这个版本放在一起

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

我将办公室位从doc。*改为普通文档,然后添加了可选的alpha字符。并删除了$ end锚点。它似乎与我的测试样本一起工作,但我不知道是否有我不理解的陷阱。

这看起来是一个很好的解决方案,还是有更好的方法来获取预定的扩展列表(包括像doc,docx,docm这样的Office变量),它们位于查询字符串之前,或者可能是查询字符串中的一个参数?


我会使用以下匹配文件名和扩展名的内容:

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

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

可能有其他格式可能不起作用,但应该得到你想要的。