【问题标题】:How to fix ' Argument of type 'number' is not assignable to parameter of type 'string | RegExp' '如何修复“数字”类型的参数不可分配给“字符串”类型的参数 |正则表达式''
【发布时间】:2020-01-20 23:55:00
【问题描述】:

我试图阻止用户使用任何特殊符号,也阻止用户使用没有字符的空格。当我尝试将它放在我的 FormGroup Validator 上时,我收到一条错误消息,提示“'number' 类型的参数不可分配给'string | 类型的参数”。正则表达式''

this.houseForm = this.fb.group({
      address: [
        null,         
        [Validators.required, Validators.pattern(^[A-Za-z0-9 ]*[A-Za-z0-9][A-Za-z0-9 ]*)],
      ]
    });

【问题讨论】:

  • Validators.pattern(/^[A-Za-z0-9 ]*[A-Za-z0-9][A-Za-z0-9 ]*$/)?
  • 这是正则表达式部分,但我收到一条错误消息,提示“'number' 类型的参数不可分配给'string | 类型的参数”正则表达式''
  • 尝试作为字符串传递 - stackoverflow.com/questions/42392373/…
  • @Vandesh 是一样的。 Validators.pattern 两者都接受。 Validators.pattern(/^[A-Za-z0-9 ]*[A-Za-z0-9][A-Za-z0-9 ]*$/) = Validators.pattern("[A-Za-z0-9 ]*[A-Za-z0-9][A-Za-z0-9 ]*")
  • 澄清一下,要指出的细节是您的模式没有包含在斜杠中(即/,这是实例化RegExp 对象的语法),也没有包含在引号中(这将使其成为字符串文字)。

标签: javascript regex angular typescript


【解决方案1】:

Validators.pattern() 需要一个字符串或一个正则表达式。你什么都不提供。

您提供了^[A-Za-z0-9 ]*[A-Za-z0-9][A-Za-z0-9 ]*,但您需要的是:

/^[A-Za-z0-9 ]*[A-Za-z0-9][A-Za-z0-9 ]*/

'^[A-Za-z0-9 ]*[A-Za-z0-9][A-Za-z0-9 ]*'

对于正则表达式,需要用斜杠 / 括起来,对于字符串,需要用引号 ' 括起来。

https://angular.io/api/forms/Validators#pattern

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-03
    • 2019-09-07
    • 2020-06-02
    • 1970-01-01
    • 2021-10-21
    • 2021-10-13
    相关资源
    最近更新 更多