我正在寻找一个.js与以下URI 匹配的正则表达式:
/foo/bar/file.js?cache_key=123
Run Code Online (Sandbox Code Playgroud)
我正在编写一个函数,试图识别作为参数传入的文件类型.在这种情况下,文件以扩展名结尾,.js是一个javascript文件.我正在使用PHP和preg_match所以我假设这是一个PCRE兼容的正则表达式.最终,我将构建此表达式,并能够检查作为URI传递的多种文件类型,这些URI不仅限于js,还可能是css,图像等.
我有以下难题.由于我们的服务器堆栈的布局方式:ELB -> Varnish -> Apache我需要Varnish从X-Forwarded-For头部提取最右边的非私有IP地址(由ELB正确设置并且可以信任).
我已经使用以下正则表达式来获取字符串中的最后一个IP地址.我的问题一直在试图弄清楚如何过滤私有IP地址.
((\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}))(?!.*(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}))
Run Code Online (Sandbox Code Playgroud)
这是我一直在测试的私有IP过滤器.
(^127\.)|(^10\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|(^192\.168\.)
Run Code Online (Sandbox Code Playgroud)
请注意,我使用的是正则表达式VMOD,它允许我访问反向引用.
看看下面的例子,它应该说明我想要完成的事情:
92.58.12.100, 10.0.120.5 -> 92.58.12.100
172.24.10.15, 127.0.0.1, 95.58.12.100 -> 95.58.12.100
92.58.12.100 -> 92.58.12.100
Run Code Online (Sandbox Code Playgroud)
此外,这是一个RegExr示例的链接.任何帮助将不胜感激.