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]:\\)/"
^^