ng-pattern (regex) 验证驱动器号

ng-pattern (regex) to validate drive letters

我在使用正则表达式时遇到了一些困难。任何帮助将不胜感激。

问题:我想在用户在路径中输入驱动器号时显示错误。

例如:如果用户输入 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"/>

ng-pattern 需要一个 "positive" 正则表达式,一些模式定义了正确的字符串。因此,当您定义 ^[a-zA-Z]:*$ 时,这意味着您只允许以 ASCII 字母开头的字符串,然后 : 零次或多次,直到字符串结尾。

你需要一个负面的前瞻:

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

如果字符串开头后有一个 ASCII 字母,然后是 :,然后是 \

,则 (?![a-zA-Z]:\) 前瞻会导致匹配失败

this plunkr

如果你需要禁止字母 + : + \ 不仅在字符串的开头使用

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