Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 验证器作为输入的属性工作,但不作为表单控件的属性工作_Regex_Angular - Fatal编程技术网

Regex 验证器作为输入的属性工作,但不作为表单控件的属性工作

Regex 验证器作为输入的属性工作,但不作为表单控件的属性工作,regex,angular,Regex,Angular,我尝试通过表单控件进行验证,但当我通过表单控件使用regex时,它似乎无法正确验证。当我将模式添加到HTML中的输入字段时,它工作得非常好。我正在尝试验证域名 let regexPattern = "^(?!.* .*)(?:[a-z0-9][a-z0-9-]{0,61}[a-z0-9]\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$"; this.domainName.setValidators(regexPattern) 此方法不起作用,我可以输入“.com”之类

我尝试通过表单控件进行验证,但当我通过表单控件使用regex时,它似乎无法正确验证。当我将模式添加到HTML中的输入字段时,它工作得非常好。我正在尝试验证域名

let regexPattern = "^(?!.* .*)(?:[a-z0-9][a-z0-9-]{0,61}[a-z0-9]\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$";
this.domainName.setValidators(regexPattern)
此方法不起作用,我可以输入“.com”之类的词,并且状态是有效的,当我在输入上放置相同的正则表达式时,它就起作用了

<input matInput formControlName="domainName" pattern="^(?!.* .*)(?:[a-z0-9][a-z0-9-]{0,61}[a-z0-9]\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$" placeholder="Domain Name">


谢谢

如果使用SetValidator进行验证,则必须返回布尔类型的自定义验证值。 这里不返回任何数据。代码应该是

 this.formGroup.controls["firstName"].setValidators([Validators.required, this.checkDomain]);

  checkDomain(control) {
  console.log("string == ");
  console.log(control.value);
  let test = control.value;
  var pattern = new RegExp(/^(?!.* .*)(?:[a-z0-9][a-z0-9-]{0,61}[a-z0-9]\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$/)
  if(test.match(pattern)){
    return true;
  }
  else{
    return false;
  }
}
和您的html it wokrs中的模式属性。您可以从下面的链接进行探索


我的英语不太好。因此,避免任何误解。

您的正则表达式不匹配空格,
(?!...*)
是多余的。它不应该是
.setValidators([Validators.pattern(/^(?[a-z0-9][a-z0-9-]{0,61}[a-z0-9]\+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$/))/code>?@wiktorstriew如果我将该模式添加到一个变量中,然后添加它,它无法正确验证。您如何进行验证<代码>让regexpatern=/^(?[a-z0-9][a-z0-9-]{0,61}[a-z0-9]\]+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$/;this.domainName.setValidators([Validators.pattern(regexpatern)])
必须工作。@WiktorStribiżew与此完全相同