regix匹配以dot开头但排除一些的单词

时间:2016-09-20 10:36:01

标签: regex nginx

我需要构建正则表达式以匹配所有以#开头的单词。还有像.well-known ..或类似的白旗词......

现在我已经构建了完全相反的那个,这个只捕获这一个。我试图找到一些反转的正则表达式符号,但我认为这不存在..

location ~ /^(\.well-known) {
    deny all;
}

THX

3 个答案:

答案 0 :(得分:1)

这是一个有效的表达方式:

^(\.(?!well-known|other-forbidden-words|another-forbidden-word).+)$

只需将其他单词更改为您想要的白名单词,并在需要时添加更多单词。

答案 1 :(得分:0)

hm ,,

我想我的答案归功于:

Invert match with regexp

这是现在有效的测试:

https://regex101.com/r/mS2wC6/2

解决方案是:

^(\.(?!well-known))

好吧,我想我现在得到了这个分组的东西..

hth,k

答案 2 :(得分:0)

你不必在OR" |"中添加单词。条件 你可以简单地做到

$pattern = "/\.+(?:[a-zA-Z]|-)/";

接受以...开头的任何内容。并包含 - 或字母表。