簡體   English   中英

為什么我的正則表達式不能與Validators.pattern一起使用?

[英]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的答案(雖然很欣賞),但它在某種意義上仍然無效,這是行不通的。

我已經在這里注銷了FormControlconsole.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM