2017-02-22 4 views
8

Я пытаюсь проверить тип ввода = «текст» с использованием шаблона, я хочу только текст.Угловой 2: Validators.pattern() не работает

Компонент:

this.from = this.fb.group({ 
    name: ['',[Validators.required,Validators.pattern('/^[a-zA-Z]+$/')]], 

}); 

Html:

<input type="text" formControlName="name"/> // omitting other html template like from tag. 

выше шаблон проверки не работает для меня, он всегда будет возвращать недопустимое состояние.

+2

Что произойдет, если вы действительно передаете регулярное выражение, а не строку: 'pattern (/^[a-zA-Z] + $ /)'? –

+1

Либо это, либо 'Validators.pattern ('^ [a-zA-Z] + $')' –

+0

спасибо @ GünterZöchbauer Validators.pattern ('^ [a-zA-Z] + $'). –

ответ

12

Pass шаблон в виде строки, без / которые являются ограничителями для регулярных выражений

Validators.pattern('^[a-zA-Z]+$') 
+0

'pin_code': ['', [ Validators.required, Validators.pattern ('^ [0-9] {1,6} $') ]], – AlpeshVasani

+0

REGEXP не работает над примером моего углового 4 проекта ... требуется только работа от условий гивинга – AlpeshVasani

6
emailRegex = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/; 
this.form = fb.group({ 
     Email : new FormControl({value: null}, Validators.compose([ 
     Validators.required, 
     Validators.pattern(this.emailRegex)])) 
}); 
3

Это то, что я нашел при использовании Validators.pattern():

Работы

Validators.pattern('[a-z]{2}') 
Validators.pattern(/^[a-z]{2}$/) 

Не работает

Validators.pattern(/[a-z]{2}/i) 
Validators.pattern(/[a-z]{2}/) 
+0

спасибо, сработал .... –

0

Помните, чтобы не делать этого:

Validators.pattern("[A-Z]{1,2}[0-9][0-9A-Z]?\s?[0-9][A-Z]{2}") 

Гоча является то, что вам нужно двойную обратную косую черту перед с победить струна избежать таким образом:

Validators.pattern("[A-Z]{1,2}[0-9][0-9A-Z]?\\s?[0-9][A-Z]{2}") 
Смежные вопросы