正则表达式以排除本地地址

时间:2013-12-30 16:18:58

标签: regex

我正在尝试配置我的Foxy Proxy程序,其中一项功能是为排除列表提供正则表达式。 我正在尝试将本地网站列入黑名单(以.local结尾),但它似乎不起作用。 这就是我的尝试:

^(?:https?://)?\d+\.(?!local)+/.*$
^(?:https?://)?\d+\.(?!local)(\d)+/.*$

我还在谷歌和Stack Exchange上进行了研究,但没有成功。

3 个答案:

答案 0 :(得分:2)

由于您在评论中指出您确实需要白名单解决方案,我接着说:

尝试:^(?:https?://)?[\w.-]+\\.(?!local)\w+/.*$

http://regex101.com/r/xV4gS0

答案 1 :(得分:1)

您的正则表达式匹配的主机名以一系列数字后跟一个句点开头,然后不是后跟字符串“local”。如果这是一个“黑名单”,那么这似乎不像你想要的那样。

如果您尝试匹配以.local结尾的所有主机名,您需要类似以下内容的主机名部分:

[^/]*\.local(?:/|$)

根据正则表达式上下文插入适当的转义。

如果您的原始问题不正确并且您确实需要白名单,那么您需要以下内容:

^(?:(?!\.local)[^\/])*(?:\/|$)

http://regex101.com/r/yB0uY4

所示

答案 2 :(得分:0)

谢谢大家的帮助。实际上,事实证明,对于这个程序,将“不.local”列为黑名单,它与“所有.local”不同于白名单。 我的模式上也有一个菜鸟错误。我的意思是"\w"而不是"\d"。谢谢Peter Alfvin抓住这个。 所以我的最终工作解决方案是Bart建议的:

^(?:https?://)?[\w.-]+\.(?!local)\w+/.*$ as a whitelist.