【问题标题】:how to create custom lowercase validator in angular 6 ?如何在 Angular 6 中创建自定义小写验证器?
【发布时间】:2018-10-17 08:02:44
【问题描述】:

我想在我的密码字段上创建一些自定义验证器,以检查用户何时输入她的密码。其中一个验证器是小写验证器。

这是我编写的自定义验证器代码


 lowerCaseValidator(control: FormControl): { [key: string]: boolean } | null {
    if (control.value === '?=.*[a-z]') {
      return {'lowerCase': true};
    }
    console.log(control.value);
    return null;

}

但它不起作用!

【问题讨论】:

  • 为什么会这样? === 不是正则表达式匹配器!!
  • 你可以使用.match

标签: angular angular6


【解决方案1】:

这是一个基于 regex 的自定义验证器,检查值是否在字母上继续为 小写

export function lowercaseValidator(c: FormControl) {
  let regex = /[a-z]/g
  if (regex.test(c.value)) {
    return null;
  } else {
    return { lowercase: true }
  }
}

stackblitz demo

【讨论】:

    【解决方案2】:

    以下是强制至少 8 个字符的正则表达式,其中一个大写、一个小写和一个数字。

      ^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9]).{8,}$
    

    【讨论】:

    • Test123456 不会通过
    【解决方案3】:

    Angular 已构建 regex validator。你可以使用它

    【讨论】:

    • 我知道,但我想单独使用一些验证器。 upperCase 和 lowerCase 但不是一种模式。我必须使用两个不同的名称。
    • 是的,但例如小写字母类似于Validators.pattern('^[a-z]+$')
    【解决方案4】:

    如果您想要确保用户输入不同大小写的密码(大写和小写),因此您假设只有小写是错误的,您可以这样做:

    import { FormControl } from '@angular/forms';
    
    export function lowerCaseValidator(control: FormControl): { [key: string]: 
    boolean } | null {
        const value: string = control.value;
    
        if (value && value === value.toLowerCase()) {
            return {lowerCase: true};
        } else {
            return null;
        }
    }
    

    您可以在这里找到一个工作示例:https://angular-ekb1wt.stackblitz.io

    如果您想要确保用户只输入了小写字母,而没有输入数字、符号或其他任何内容......那么您需要一个 RegEx,正如其他人已经提到的那样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-28
      • 2019-01-07
      • 1970-01-01
      • 2018-12-25
      相关资源
      最近更新 更多