【问题标题】:Validation for blank characters? Angular 4验证空白字符?角 4
【发布时间】:2017-12-14 08:52:11
【问题描述】:

我需要在我的表单上创建某种验证,我不希望用户能够在字段内输入 1++ 个空格。所以,他可以输入空格,但不能只有空格。这就是我的验证目前的样子:

this.valForm = this.fb.group({
      'firstName': [null, Validators.compose([Validators.required, Validators.maxLength(50)])],
      'lastName': [null, Validators.compose([Validators.required, Validators.maxLength(50)])]
});

我不知道使用什么模式来创建这种类型的验证。谢谢。

【问题讨论】:

  • 用户只能输入一个空格对吗?
  • @ArunKumaresh 用户可以输入空格,但不能只是字段内的空格,所以可以是 'Example Value' ,但不能是 ' ' 、 ' ' 之类的

标签: angular validation


【解决方案1】:

你可以的

'firstName': [null, [Validators.required, Validators.maxLength(50), Validators.pattern(/^((?!\s{2,}).)*$/)]]

如果你用链^((?!\s{2,}).)*$Scriptular上测试它,你会发现

Hello darling // Matches
Hello  darling // Doesn't match

这不是正则表达式应该做的事情:他们不擅长。正则表达式应该在字符串中找到表达式的出现,而不是相反。但是,他们仍然可以做到。

如果您想了解更多信息,这称为消极环顾

【讨论】:

    【解决方案2】:

    您可以创建一个自定义验证器来检查

    userInputString.trim() !== ''
    

    验证器只不过是一个函数,它接受控制并返回它是否有效(作为布尔值或承诺/可观察)。

    有关更多详细信息,请查看 Angular 2+ 中的自定义验证器的任何示例,例如

    https://blog.thoughtram.io/angular/2016/03/14/custom-validators-in-angular-2.html

    【讨论】:

    • 这个 .indexOf(' ') 不会检查字段内的任何空间吗?
    • 对不起,我没听懂你的问题,等一下,我会调整答案
    猜你喜欢
    • 2020-04-22
    • 1970-01-01
    • 1970-01-01
    • 2013-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-15
    相关资源
    最近更新 更多