2016-10-21 4 views
1

"/ pt /"または"/ ja /"で始まらないすべての文字列をルーティング設定に一致させるために、正規表現を使用しようとしています。追加のテキストがある場合とない場合があります。

は、だから私はこの思い付いた:

$urlRouterProvider.when('^(?!/(pt|en)/).*', function ($injector, $location) { 
    const path = $location.path(); 
    $location.path('/pt' + path !== '' ? path : '/').replace(); 
}); 

残念ながら、これはエラーをスローします:Invalid parameter name '.' in pattern '^(?!/(pt|en)/).*'

このシナリオでは、正規表現を使用するための正しい方法は何ですか?私はボヘミアン応答に基づいて'^(?!/(pt|en)/).*''{(?!\/(pt|en)\/).*}'からの発現を変更した

EDIT

。しかし、エラーは続く。

答えて

1

when方法ではなく、

変更/^(?!\/(pt|en)).*/への正規表現は、あなたの要件を満たすために$injector and $location services.use rule()を持っていません。

パラメータを処理するカスタムURLの

Check the regexp here

ルール():

ハンドラ関数の引数として$injector$locationサービスにとる関数。あなたは文字列として有効なパスを返す責任があります。

app.config(function ($urlRouterProvider) { 
    $urlRouterProvider.rule(function ($injector, $location) { 
      //what this function returns will be set as the $location.url 
      var path = $location.path(), normalized = path.toLowerCase(); 
      if ('/pt.asd'.match(/^(?!\/(pt|en)).*/) == undefined) { 
       // this starts with /pt or /en 
       // $location.replace().path(normalized); 
      } 
      else 
      { 
       // this does not starts with /pt or /en 
       // do some thing 
      } 
     }); 
}) 

Reference you are looking for

関連する問題