当前位置: 首页 > 知识库问答 >
问题:

使用角度 2 进行验证

凤经武
2023-03-14

嗨,使用angular 2作为密码字段,我必须设置“密码应该至少有1个大写字母,1个小写字母,1个数字,1个特殊字符,最少8个字符,最多16个字符”

因为我已经完成了“最少8个字符,最多16个字符”。

但我无法为其余的东西设置至少1个大写字母,1个小写字母,1个数字,1个特殊字符。

<div class ="form-group">
  <label> Password </label>
   <input class ="form-control" name ="password" #password="ngModel" [(ngModel)] = "angulaService.selectedAngula.password" 
   placeholder="password"  minlength="8" maxlength="16" >

   <div class="form-control-feedback"
   *ngIf="password.errors && (password.dirty || password.touched)">
  <p *ngIf="password.errors.required">Password is required</p>
  <p *ngIf="password.errors.minlength">Password must be min  8 characters long</p>
 </div>
  <div class="form-control-feedback"
    *ngIf="password.errors && (password.dirty || password.touched)">
    <p *ngIf="password.errors.required">Password is required</p>
    <p *ngIf="password.errors.maxlength">Password should not be greater than  16 characters long</p>
  </div>
</div>

请帮我一下

预先感谢

共有2个答案

卢勇
2023-03-14

最好使用Regex,

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]

(您已经在检查最小长度和最大长度,因此无需在正则表达式中设置长度限制,但您仍然可以通过正则表达式进行此操作。尽管我建议将这两个错误分开。)

黄丰
2023-03-14

大写验证器示例:

import { Directive } from '@angular/core';
import {NG_VALIDATORS, AbstractControl, ValidationErrors, Validator} from '@angular/forms';

@Directive({
  selector: '[uppercaseValidator]',
  providers: [{provide: NG_VALIDATORS, useExisting: UppercaseValidatorDirective, multi: true}]
})
export class UppercaseValidatorDirective implements Validator {
  validate(control: AbstractControl): ValidationErrors | null {
    const value = control.value
    return /[A-Z]/.test(value) ? null : { uppercase: 'Must contain at least one upper case character'}
  }
}

用法:

应用程序组件.html

<form>
  <input uppercaseValidator [(ngModel)]="uppercase" #uppercaseCtrl="ngModel" name="uppercase"/>
  <div *ngIf="uppercaseCtrl.hasError('uppercase')">At least one character must be uppercased</div>
</form>

应用程序组件

<form>
  <input uppercaseValidator [(ngModel)]="uppercase" #uppercaseCtrl="ngModel" name="uppercase"/>
  <div *ngIf="uppercaseCtrl.hasError('uppercase')">At least one character must be uppercased</div>
</form>

现场演示

按照创建自定义验证指令的相同步骤创建其他验证程序。您只需要更改正则表达式和错误消息。您可以使用以下正则表达式:

  • 大写:/[A-Z]/
  • 小写:/[a-z]/
  • 编号:/[0-9]/
  • 特殊性格:取决于你认为什么是特殊性格
 类似资料:
  • 我正在建立Angular 4 NodeJS(用于SAML-PASSPORT)Spring Boot(所有API)应用程序。 这是身份验证和授权流程:1。在UI中,用户单击登录2。请求被发送到SAML IDP以进行登录3。用户验证自己4。SAML IDP发回我的NodeJS APIendpoint/登录/回调5。NodeJS将用户重定向到前端-此时,我想生成一个令牌并将其发送到UI端。我无法通过UR

  • 我想在进行某些处理时显示一个进度条覆盖图。我可以计算完成百分比,所以我想使用一个确定的进度条。对于覆盖部分,我想使用一个对话框。基本上,我想做这里要做的事情(Angular 2 Material Progress微调器:显示为叠加),但我不需要微调器。因此,我的组件将如下所示: 模板: 元件: 然后我使用这个组件的代码如下: 我发现了这一点(如何将数据传递到angular material 2的对

  • 我现在有一个小应用程序,它使用Keycloak来拥有一个SSO。但是,当我想对main.component.ts进行ng测试时,我遇到了标准的'It Wall Create'测试失败的问题,我得到了以下错误消息: 从“./main.component”导入{MainComponent};从“../app.topbar.component”导入{AppTopBarComponent};从'../ap

  • > 到目前为止,我使用角2快速入门创建了一个新项目。 我决定开始使用angular 2 cli,并创建了一个新的angular 2 cli项目。 移动了我的所有文件并重新安装了所有软件包。 现在,当我试图在CLI项目中使用角2材料时,我遵循了这里的指南,但这是我得到的: 会出什么问题?

  • 我需要验证密码输入表单字段的强度。要求是: < li >至少一个小写字符 < li >至少一个大写字符 < li >至少一个号码< br >(无论顺序) 我迄今为止搜索和尝试的结果如下,结果不一致。 它似乎验证了正则表达式验证的顺序。 我需要的是检查是否存在至少一个字符“类型”。

  • 问题内容: 我知道这个问题已经被问过很多次了,而且我知道在大多数情况下人们会丢失文件。 我遇到了同样的问题,试图在模块上测试工厂。不幸的是,我一直遇到测试方面的问题(为什么要使用Angular,为什么要假设和对象?),未定义模块的状态。我很茫然。我也尝试过使用angular.mocks.module,但随后收到一条消息,提示未定义Angular。我究竟做错了什么? 值得注意的是,我正在使用gulp