【问题标题】:What will be the Custom Validator for password pattern checking having at least one uppercase,lowercase and number什么是密码模式检查的自定义验证器,至少有一个大写,小写和数字
【发布时间】:2018-04-03 09:08:32
【问题描述】:
import { Directive, forwardRef, Attribute } from '@angular/core';
import { NG_VALIDATORS,Validator,Validators,AbstractControl,ValidatorFn } from '@angular/forms';

@Directive({
    selector: '[checkPattern][formControlName],[checkPattern][formControl],[checkPattern][ngModel]',
    providers: [
        { provide: NG_VALIDATORS, useExisting: forwardRef(() => PatternValidator), multi: true }
    ]
})
export class PatternValidator implements Validator {
    constructor() {}

    validate(c:AbstractControl): { [key: string]: any } {
        // self val
        let obj:any ={};
        let number:RegExp=new RegExp("/[0-9]/g")
        let capital:RegExp=new RegExp("/[A-Z]/g")
        let letter:RegExp=new RegExp("/[a-z]/g")
if(!number.test(c.value))
            {
                obj.patternNumber=true;
            }
            else
            if(obj.patternNumber)
            delete obj.patternNumber

            if(!capital.test(c.value))
            {
                obj.patternCapital=true;
            }
            else
            if(obj.patternCapital)
            delete obj.patternCapital

            if(!letter.test(c.value))
            {
                obj.patternLetter=true;
            }
            else
            if(obj.patternLetter)
            delete obj.patternLetter

            return obj;

密码可以是:1wWrt 密码不能是:1wwwrt,11111,wwww,WWWWW {密码应至少有一个大写、一个小写、一个数字和最少 8 个字符。 不能只允许大写、小写和数字

【问题讨论】:

  • 有什么问题?
  • 对于至少有一个大写、一个小写、一个数字的模式的自定义验证器是什么?

标签: angular customvalidator


【解决方案1】:

此正则表达式强制至少 8 个字符,一个大写,一个小写和一个数字。

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

我用的是附加字符而不是数字

<mat-form-field class="input-row">
  <input matInput formControlName="password" type="password" placeholder="{{ 'Password' | translate }}" required pattern="^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[#?!@$%^&*-]).{8,}$">
  <mat-error>{{'Doesn't match password criteria' | translate}}</mat-error>
</mat-form-field>

【讨论】:

    猜你喜欢
    • 2018-01-23
    • 2013-11-08
    • 2015-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-08
    相关资源
    最近更新 更多