2017-02-27 6 views
0

で、私はnginxの正規表現のための正規表現.2語を除く。 nginxのサーバー

に名前が -testing-staging含まれている場合以外のすべてを一致させることができます

1を3台のサーバーを作成しようとしています。

-testingのすべてとserver_nameに一致するもの。 サーバ名に-stagingのすべてと一致するもの。

最後の2つは問題ではありません。それらは働いている。私は最初の人と闘っているだけです。ここで

は、私が試した正規表現です: ~^.*(?!(-testing)|(-staging))\.example\.lh$

https://regex101.com/r/m8vXsL/1(チルダを削除)

しかし、それはまだそれらの単語を含むSERVER_NAMESと一致します。どんな助けもありがとう。

+0

もし 'nginx'がそれをサポートしていれば(あなたの例ではpcreを選択しましたので、そう仮定します)、' <'を挿入するだけで、代わりに否定的な裏返しを得ることができます。 \\。*(?<!( - testing)|(-staging))\。example \ .lh $ ' – ClasG

+0

これは完全に機能しました。はいnginxはpcreをサポートしています。 'nginxで使用される正規表現は、Perlプログラミング言語(PCRE)で使用されるものと互換性があります。正規表現を使用するには、サーバ名がチルダ文字で始まる必要があります。 ' –

+0

' '.example.lh'の直前だけではなく、' 'どこでも*' *表示することはできません。ルックアヘッドチェックを使用してください - ['^(?:。* - (?:testing | staging))。* \。example \ .lh $'](https://regex101.com/r/cPGIQE/1)。 –

答えて

2

nginxがサポートされている場合(あなたの例ではpcreを選択していますので、そのように仮定します)、<を挿入して、代わりに否定的な裏返しを取得してください。すなわち、

^.*(?<!(-testing)|(-staging))\.example\.lh$ 
    ^

Here at regex101

関連する問題