2016-07-22 12 views
1

Ich habe wenig harte Zeit mit einem regulären Ausdruck. Jede Hilfe würde sehr geschätzt werden.ng-pattern (regex) um Laufwerksbuchstaben zu überprüfen

Problem: Ich möchte einen Fehler anzeigen, wenn Benutzer Laufwerksbuchstaben in den Pfad eingibt.

Beispiel: Wenn Benutzer C: \ oder D: \ oder S: \ .... eingibt, sollte das Formular einen Fehler anzeigen. Wenn jemand // remote server/example.txt eingibt, sollte er ihnen erlauben, fortzufahren.

http://plnkr.co/edit/jyKfOdnctnhCkIeT4r2Z?p=preview

<form name='myform'>  
    <input type="text" name='ip' ng-model="usd" ng-pattern="/^[a-zA-Z]:*$/" 
    ng-change="convert_to_btc()" placeholder="Enter path"/> 
+0

Ich glaube, Sie brauchen 'ng-pattern ="/^ (?! [A-Za Z]: \\)/"', überprüfe [diese Plunkr] (http://plnkr.co/edit/3UcFZNsjxPkVXkUJizu2?p=preview). Wenn Sie es nicht nur am Anfang des Strings verbieten müssen: 'ng-pattern ="/^ (?!. * \ B [a-zA-Z]: \\)/"' –

Antwort

1

Die ng-pattern erfordert einen "positiven" regex, einige Muster, das, was Zeichenfolge ist ein richtiges ist, zu definieren. Wenn Sie also ^[a-zA-Z]:*$ definieren, bedeutet dies, dass Sie nur Zeichenfolgen zulassen, die mit einem ASCII-Buchstaben beginnen, und : null oder mehrmals bis zum Ende der Zeichenfolge.

Sie benötigen einen negativen Look-Ahead:

ng-pattern="/^(?![a-zA-Z]:\\)/" 
       ^^^   ^

Der (?![a-zA-Z]:\\) Look-Ahead nicht das Spiel, wenn es um einen ASCII-Buchstaben nach dem Beginn des Strings, gefolgt mit einem : und dann \.

Siehe this plunkr.

Wenn Sie einen Brief an nicht zulassen + : + \ nicht nur zu Beginn der strin Verwendung

ng-pattern="/^(?!.*\b[a-zA-Z]:\\)/" 
       ^^ 
+1

Danke. Genau das, was ich brauche. Jetzt weiß ich wie es funktioniert :) – pmh