ng-pattern(正则表达式)验证驱动器号

时间:2016-07-22 16:31:46

标签: angularjs regex regex-negation angularjs-ng-pattern

我很难用正则表达式。任何帮助将不胜感激。

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

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

1 个答案:

答案 0 :(得分:1)

ng-pattern需要&#34;肯定&#34;正则表达式,一些模式定义什么字符串是正确的。因此,当您定义^[a-zA-Z]:*$表示您只允许以ASCII字母开头的字符串时,则:为零或更多次,直到字符串结尾。

你需要一个消极的向前看:

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

如果字符串开头后有一个ASCII字母,那么(?![a-zA-Z]:\\)前瞻会使匹配失败,然后是:,然后是\

请参阅this plunkr

如果您不仅在使用strin开始时不允许使用字母+ : + \

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