ng-pattern (regex) для проверки букв дисков

У меня мало трудностей с регулярным выражением. Любая помощь будет принята с благодарностью.

Проблема: я хочу отобразить ошибку, когда пользователь вводит буквы диска в путь.

например: если пользователь вводит C:\ или D:\ или S:\ .... в форме должна отображаться ошибка. Если кто-то входит в // удаленный сервер /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 ответ

Решение

ng-pattern требует "положительного" регулярного выражения, некоторого шаблона, который определяет, какая строка является правильной. Итак, когда вы определяете ^[a-zA-Z]:*$ это означает, что вы допускаете только те строки, которые начинаются с буквы ASCII, а затем имеют : ноль или более раз, до конца строки.

Вам нужен негативный взгляд:

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

(?![a-zA-Z]:\\) lookahead терпит неудачу при совпадении, если после начала строки есть буква ASCII, за которой следует : а потом \,

Смотри этот планкр.

Если вам нужно запретить письмо + : + \ не только в начале использования стрин

ng-pattern="/^(?!.*\b[a-zA-Z]:\\)/"
                 ^^
Другие вопросы по тегам