【问题标题】:regix match words starting with dot but exclude someregix 匹配以点开头的单词但排除一些
【发布时间】:2017-01-28 05:59:34
【问题描述】:

我需要构建正则表达式来匹配所有以 .还有像.well-known这样的白旗词..或类似的词..

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

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

谢谢

【问题讨论】:

    标签: regex nginx


    【解决方案1】:

    这是一个有效的表达式:

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

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

    【讨论】:

    • thanx 伙计,现在太好了 :) regex101.com/r/mS2wC6/3 这个正则表达式的东西摇滚
    • 确实如此。正则表达式非常强大,但很痛苦。
    【解决方案2】:

    嗯,,,

    我想我找到了答案,感谢:

    Invert match with regexp

    这是现在有效的测试:

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

    解决办法是这样的:

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

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

    hth, k

    【讨论】:

    • 当您的表达式找到一个以. 开头且未列入白名单的词时,它与整个词不匹配。
    • ^(\.(?!well-known))^\.(?!well-known) 相同 - 除非您使用的是组 1。
    【解决方案3】:

    您不必在 OR "|" 中添加单词健康)状况 你可以简单地做

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

    接受任何以 .并包含 - 或字母。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-04
      • 1970-01-01
      • 2021-02-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多