2016-09-30 5 views
2

私の正規表現がここで動作しない理由を誰に教えてもらえますか?Regex構文がWeb.Configre書き換えで無効です

<rule name="Redirect to http" stopProcessing="true"> 
     <match url="^(?i)\Q/\Ehome\Q/\E?private$" ignoreCase="true" /> 
     <action type="Redirect" url="http://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" /> 
    </rule> 

このスクリプトを追加すると、HTTP 500.22エラーが発生します。

式^(λi)\ Q/\ Ehome \ Q/\ E?private $には無効な構文があります。

+0

「働いていない」とはどういう意味ですか?サンプル入力と予想される動作を実演してください。 – Asaph

+0

上記のように私は500.22エラーが発生します。構文は私には大丈夫ですか?私も^と$ –

+0

なしで試したスラッシュは特殊な文字ではないので、Q/E演算子は必要ありません。 ignorecase = trueのように '(?i)'も必要ありません。 '^/home/private $'を使用してください。 –

答えて

1

スラッシュは特別な正規表現のメタ文字ではありませんので、あなたは\Q/\Eオペレーターを必要としません。

ignoreCase=trueを使用する場合は、(?i)も必要ありません。

^/home/private$を使用してください。

+0

はい、ありがとう。関心がありません.netは大文字小文字を無視して挿入しますか? –

+0

ここで使用されている.NET正規表現は、ECMAScriptの正規表現であるかどうかはわかりません。 .NET正規表現はインラインオプションや修飾子をサポートしているので、 '(?i)^/home/private $'は有効な.NETパターンです。 –