2017-02-22 97 views
8

我想驗證輸入類型=「文本」使用模式,我只想要文本。Angular 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öchbauerValidators.pattern('^ [a-zA-Z] + $')工作。 –

回答

12

通過模式爲字符串,不/這對正則表達式的分隔符

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}") 

的疑難雜症是,你需要在s前面一個雙反斜線打敗這樣的字符串逃脫

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