2016-05-13 3 views
2

Ich bekomme meine Regex von einer API, und sie beginnt oft mit^und endet mit $ (zum Beispiel ^-?[0-9]+$). Wenn Sie die Regex als String in ng-pattern setzen, erhalten Sie eine Lexer Error, da eckle standardmäßig die Strings^und $ hinzufügt.

Von Angular API reference

  • If the expression evaluates to a RegExp object, then this is used directly.
  • If the expression evaluates to a string, then it will be converted to a RegExp after wrapping it in^and $ characters. For instance, "abc" will be converted to new RegExp('^abc$').

Sehr gut, dann wollen wir versuchen, die Regex Zeichenfolge in ein Regex-Objekt zu konvertieren, dachte ich. Also habe ich versucht, dies:

json.data.data[i].validateRegex = new RegExp(json.data.data[i].validateRegex, "g"); 

Aber in einem anderen Fehler führt:

Error: ngPattern:noregexp 
Expected Regular Expression 
Expected {} to be a RegExp but was {}. 

Wie kann ich meine Regex mit ng-Muster zu arbeiten? Vorzugsweise ohne die^und $ aus der Regex zu entfernen.

+0

Kannst du irgendeine Geige/PLNKR hinzufügen? Es wird hilfreich sein, Ihre Frage zu beantworten. –

Antwort

2

Die Umwandlung der Zeichenfolge in ein Regex-Objekt funktioniert.

Aber ng-Muster sollte nicht {{ }} drin haben. Es wurde von ng-pattern="{{ regexObj }}" zu ng-pattern="regexObj" geändert!

+0

danke für die Beantwortung Ihrer Frage. Ich hatte dasselbe Problem wie du. – sg552