2016-04-18 6 views
0

Ich habe ein Regex-Muster, das ich in ui-Router (docs) übereinstimmen muss. Ich habe einen regulären Ausdruck außerhalb des Winkel bereit getestet:Angular Ui-Router Regex verursacht Fehler

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

Ich brauche 8 Zeichen, von denen eine Ziffer in jeder Position ist.

Wenn ich es in meine eckige App einfüge, bekomme ich Routing-Fehler. Hier ist mein Code:

var accountNumberParam = '{accountNumber:(?=.*\d)(?=.*[a-zA-Z0-9])\w{8}}', 
var states = [ 
    { 
      name: 'name', 
      url: '/' + accountNumberParam, 
      templateUrl: '/path/to/my.html', 
      controller: 'MyCtrl' 
    }, 
] 

Ich habe versucht mit und ohne führende/nachlaufende "/" Zeichen. Ich denke, das ist ein Formatierungsproblem, aber ich kann nichts anderes über die Formatierung und die Dokumentation finden. Danke für die Hilfe.

+0

Sie haben versucht, es zu einer Winkelkonstante und injizieren und verwenden es von dort? – rrd

+0

Nein, es in eine Konstante zu verwandeln ändert nichts – panzhuli

Antwort

1

Sie müssen sicherstellen, dass Ihre Regex-Zeichenfolge ordnungsgemäß maskiert ist.

Dies liegt daran, dass Sie in diesem Fall nicht das JavaScript-Regex-Primitiv verwenden, sondern stattdessen Strings verwenden.

Wenn Sie Ihre Regex als Zeichenfolgenwert speichern, müssen Sie sicherstellen, dass Sie zweimal entkommen, um sicherzustellen, dass keine unbeabsichtigten Escapezeichen vorhanden sind.

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

Arbeitete gut - danke! – panzhuli

Verwandte Themen