2016-07-26 6 views
0

Я пытаюсь проверить ввод символов с ограничениями. Поле ввода принимает только символы алфавита, тире и подчеркивания.Как использовать ngPattern для проверки ввода, содержащего ограниченные символы?

Когда я тестирую код ниже, первый символ принимается, а второй вызывает ошибку шаблона.

Мой RegEx: /^ [A-Za-Z _-] $/

HTML код:

<input ng-model="inputText" name="inputText" required md-maxlength="{{options.maxTextLength}}" md-autofocus ng-keypress="keypress($event)" ng-change="textChanged()" ng-pattern='/^[a-zA-Z_-]$/'> 
<div ng-messages="inputTextForm.inputText.$error"> 
    <div ng-message="required">Input is required.</div> 
    <div ng-message="md-maxlength">Input has reached the maximum characters allowed.</div> 
    <div ng-message="pattern">Invalid characters.</div> 
</div> 

Этот код находится в угловом Материал Dialog (v1.0.9)

ответ

1

Для более одного символа вам нужно * в конце шаблона, то есть:

<input ... ng-pattern="/^[a-zA-Z_-]*$/" /> 
<!--        ^ --> 
<!--        | --> 
<!--    HERE -------------+ --> 

См скрипку: https://jsfiddle.net/5wa5478c/

+0

Большое спасибо! –

+0

У меня есть вопрос, может быть, вы можете ответить. Этот ng-шаблон должен быть динамическим и задаваться контроллером в зависимости от контекста. Если я попытаюсь связать это регулярное выражение, это не сработает. Если я удаляю косую черту, он работает ... –

+1

Вы можете сделать это как: '', где 'pattern' помещается в область с помощью контроллера. См. Https://jsfiddle.net/xsvpmp6c/ –

0

При этом это регулярное выражение указывает, что правильный ввод - это начало строки (^), за которой следует один из утвержденных символов, за которым следует конец строки ($).

Удалите^и $, и это должно сработать!

ng-pattern='/[a-zA-Z_-]/' 

Проверьте свой код здесь первым: http://rubular.com/

+0

Да, я протестировал его на другом веб-сайте RegEx онлайн, но в моем угловом коде он вызывает ошибку шаблона, независимо от того, какой второй символ я вводил (действительный или не!) –

+0

Удалите^и $, как указано выше, и он должен работать. Ваш код как есть не работает на rubular, но работает с этим исправлением. –

+0

Я удалил эти персонажи, и теперь он разрешает все (работает только для первого символа) –