2016-04-18 4 views
0

私はui-router(docs)で一致する正規表現パターンを持っています。エラーを起こすui-router正規表現エラー

(?=.*\d)(?=.*[a-zA-Z0-9])\w{8} 

私は8桁の文字を必要とし、そのうちの1桁は任意の位置にあります。

角度アプリに挿入すると、ルーティングエラーが発生します。私のコードは次のとおりです:

私は先行/後ろに "/"文字を付けて試しました。私はこれがフォーマット上の問題だと思うが、私はこれがフォーマットされている方法とドキュメンテーションについて何か違うものを見つけることはできない。助けてくれてありがとう。

+0

角度定数にして注入して使用してみましたか? – rrd

+0

いいえ、定数に変えても何も変わりません – panzhuli

答えて

1

正規表現の文字列が正しくエスケープされていることを確認する必要があります。

これは、このインスタンスではJavascript正規表現プリミティブを使用せず、代わりにStringを使用しているためです。

Regexを文字列値として保存するときは、意図しないエスケープがないように2回エスケープする必要があります。

var accountNumberParam = '{accountNumber:(?=.*\\d)(?=.*[a-zA-Z0-9])\\w{8}}'; 
var states = [{ 
    url: '/' + accountNumberParam, 
    template: '<h1>TEST : {{accountNumber}}</h1>', 
    controller: testController, 
}]; 
+0

うまくいった - ありがとう! – panzhuli