什么是用于至少有一个大写,小写和数字的密码模式检查的自定义验证器 [英] What will be the Custom Validator for password pattern checking having at least one uppercase,lowercase and number

查看:132
本文介绍了什么是用于至少有一个大写,小写和数字的密码模式检查的自定义验证器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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个字符。
不仅只允许大写,小写和数字

password can be:1wWrt password can't be : 1wwwrt,11111,wwww,WWWWW {password should have at least one uppercase , one lowercase, one number and minimum 8 characters. No only uppercases ,lowercases and numbers are allowed

推荐答案

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

This regex enforces at least 8 character with one uppercase, one lowercase and one number.

^(?=。*?[AZ])(?=。*?[az])(?= 。*?[0-9])。{8,} $

我将其与其他字符(而不是数字)一起使用

I used it a with additional characters instead of numbers

<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>

这篇关于什么是用于至少有一个大写,小写和数字的密码模式检查的自定义验证器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆