[英]Why doesn't my regex work with Validators.pattern?
我有一個只允許包含字母,空格和撇號的表格。 我有一個與Angular的驗證器:
Validators.compose([
AppValidators.required,
Validators.minLength(2),
Validators.pattern('[a-zA-Z ]*'),
]))
第一個問題是,如果我要做
Validators.pattern(/[a-zA-Z ]*/)
驗證根本不起作用。
否則我嘗試過類似的事情
Validators.pattern('[a-zA-Z\' ]*')
Validators.pattern(/[a-zA-Z' ]*/)
Validators.pattern('[a-zA-Z\s']*')
Validators.pattern(/[a-zA-Z\s']*/)
但是驗證似乎不起作用。 根據regexr , [a-zA-Z' ]
似乎是我想要的,但是驗證仍然無法正常工作。
編輯:
我已經嘗試了用戶Thefourthbird和Brandon的答案(雖然很欣賞),但它在某種意義上仍然無效,這是行不通的。
我已經在這里注銷了FormControl
: console.log(this.member.control.firstName)
:
{
// ....
errors: {
pattern: {
actualValue: "O'Reilly",
requiredPattern: "/^[a-zA-Z ']+$/"
},
},
pristine: false,
status: "INVALID"
}
我建議將RegExp對象與模式驗證器一起使用。 有時使用字符串時,我看到驗證器的行為異常。
對於模式本身, ^[a-zA-Z ']+$
應該足夠,因此:
...Validators.pattern(new RegExp(/^[a-zA-Z ']+$/))
應該讓你走。 RegEx驗證程序: https : //regex101.com/r/W35zae/1
我認為最直接的解決方案是使用模式驗證器:
<input name="firstName" ngModel pattern="[a-zA-Z' ]{2,}">
參見: https : //angular.io/api/forms/PatternValidator
以下是一些實現示例: https ://www.concretepage.com/angular-2/angular-2-4-pattern-validation-example(formControl、ngModel等)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.