2016-07-22 72 views
1

我很難用正則表達式。任何幫助將不勝感激。ng-pattern(regex)來驗證驅動器號

問題:我想在用戶在路徑中輸入驅動器號時顯示錯誤。

例如:如果用戶輸入C:\或D:\或S:\ ....表單應該顯示錯誤。 如果有人輸入// remote server/example.txt,應該允許他們繼續。

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

我認爲你需要'NG-模式的開始=「/ ^(?![A-ZA- Z]:\\)/「',查看[this plunkr](http://plnkr.co/edit/3UcFZNsjxPkVXkUJizu2?p=preview)。如果您不僅需要在字符串的開始處禁止它:'ng-pattern =「/ ^(?!。* \ b [a-zA-Z]:\\)/」' –

回答

1

ng-pattern需要一個「積極的」正則表達式,一些被定義什麼字符串是正確的模式。因此,當您定義^[a-zA-Z]:*$時,這意味着您只允許以ASCII字母開頭的字符串,然後將字符串結尾的字符數設爲零或零次以上。

你需要一個負前瞻:

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

(?![a-zA-Z]:\\)先行失敗的比賽,如果有字符串開始後的ASCII字母,然後用:然後\

請參閱this plunkr

如果需要禁止一個字母+ : + \不僅在使用〜應變

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

謝謝。正是我需要的。現在我知道它是如何工作的:) – pmh