1

我对正则表达式有点困难。任何帮助将不胜感激。

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

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

1 回答 1

1

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

你需要一个消极的前瞻:

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

如果(?![a-zA-Z]:\\)字符串开头后有一个 ASCII 字母,后跟 a:和 then ,则前瞻失败匹配\

看到这个 plunkr

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

ng-pattern="/^(?!.*\b[a-zA-Z]:\\)/"
                 ^^
于 2016-07-22T19:45:59.413 回答