2017-01-20 19 views
1

私のルートパラメータに一致する正規表現を導入することで、ルーティングの問題を混乱させるように修正しようとしています。 パスのようなものである必要があります:angular-ui-routerとパラメータの正規表現

/accounts/MER005 

または

/accounts/MER0050000 

ので、私は{3} {3} \ dはこの表現[AZ]を思い付いた?:\ dの{4}。しかし、それは動作しません。エラーはありませんが、URLに移動すると何もしません。ただ、明確にする

、これが私の状態です:

$stateProvider.state('accounts', { 
    abstract: 'true', 
    url: "/accounts", 
    template: '<div ui-view></div>' 
}).state('accounts.view', { 
    url: "/{accountNumber:[A-Z]{3}\d{3}?:\d{4}}", 
    views: { 
     '@': { 
      templateUrl: 'tpl/account/index.html', 
      controller: 'AccountController', 
      controllerAs: 'controller' 
     } 
    }, 
    resolve: { 
     account: ['$stateParams', 'AccountService', function ($stateParams, accountService) { 
      return accountService.get($stateParams.accountNumber); 
     }] 
    }, 
    data: { 
     requireLogin: true, 
     pageTitle: 'Account details' 
    } 
}) 

は、それが正常に動作させるためにどのように誰もが知っていますか?

+0

そして、 '?'あなたが期待通りに働いていますか? – aBnormaLz

答えて

0

ui-routerは\dが好きではないことが分かります。代わりに、より長い数字の[0-9]を使用する必要があります。

+0

それは '\ d'が好きではないjavascript文字列です。あなたはそれが 'd'文字であることをjavascriptに伝えています。バックスラッシュを二重引用符で囲んでください。元の '\\ d'のように動作します。 –

0

あなたの正規表現では ':'文字が問題だと思うし、 '?'あなたが期待どおりに動作していません。私はこの正規表現があなたの問題を解決すると思います:[A-Z] {3} \ d {3,7}

これらの正規表現hereを試すことができます。

+0

[3,7]は3と7の任意のトゥイーンを意味しますか?それは3または7でなければならないので、4,5または6ではありません – r3plica

+0

@ r3plica実際にはそれは本当です、私はその点を逃しました – aBnormaLz