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

在Angular 5中,密码验证不起作用

公西翊歌
2023-03-14

我是angular 5的新用户,在这里我试图根据一些条件来验证用户密码。

    < li >最少六个字符,至少一个字母和一个数字 < li >最少八个字符,至少一个字母、一个数字和一个特殊字符 < li >最少八个字符,至少一个大写字母、一个小写字母和一个数字

用户可以为密码字段选择上述模式之一,验证错误消息将相应地更改。

对我来说,上述条件都不能正常工作。

有人能帮我解答一下吗?

注意:如果我直接用超文本标记语言给出模式,它就可以正常工作。

app.component.html应用程序组件.html

<mat-form-field class="col-sm-12">
    <mat-label>Enter your password</mat-label>
    <input matInput placeholder="Password" [pattern]="patternNormal" [formControl]="fPassword" placeholder="Password" required>
    <mat-error *ngIf="fPassword.errors?.required">Please fill out this field</mat-error>
    <mat-error *ngIf="fPassword.errors&&fPassword.errors.pattern">{{errorMgs}}</mat-error>
</mat-form-field>

应用程序组件.ts

export class SnackBarOverviewExample {

  //Minimum six characters, at least one letter and one number:
  patternNormal: any = "^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{6,}$";

  //Minimum eight characters, at least one letter, one number and one special character:
  patternMedium: any = "^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$";

  //Minimum eight characters, at least one uppercase letter, one lowercase letter and one number:
  patternHign: any = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,}";

  fEmail = new FormControl();
  fPassword = new FormControl();
  errorMgs: string;
  selectedPattern: string;
  constructor(private _formBuilder: FormBuilder) { }

  ngOnInit() {
    this.selectedPattern = 'patternNormal'; //will change based on user preference

    if (this.selectedPattern === 'patternNormal') {
      this.errorMgs = 'Password must have min 6 char,atleast 1 num and 1 char'
    } else if (this.selectedPattern === 'patternMedium') {
      this.errorMgs = 'Minimum eight characters, at least one letter, one number and one special character'
    } else if (this.selectedPattern === 'patternHign') {
      this.errorMgs = 'Minimum eight characters, at least one uppercase letter, one lowercase letter and one number'
    }

  }

Stackblitz URL:https://stackblitz.com/edit/angular-stacb4-5oaagd?file=app/snack-酒吧概览示例.ts

更新:

1,第一个模式的示例值- abcde1(显示错误,但当我直接在HTML中给出模式时,接受相同的值)。

共有1个答案

常心水
2023-03-14

有几个问题:

  • 模式中的所有反斜杠加倍,例如\d=

查看更新的演示。

代码更改:

//Minimum six characters, at least one letter and one number:
patternNormal: any = "^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d]{6,}$";

//Minimum eight characters, at least one letter, one number and one special character:
patternMedium: any = "^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@$!%*#?&])[A-Za-z\\d@$!%*#?&]{8,}$";

//Minimum eight characters, at least one uppercase letter, one lowercase letter and one number:
patternHign: any = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&])[A-Za-z\\d@$!%*?&]{8,}$";

ngOnInit() {
    this.selectedPattern = this.patternNormal; //will change based on user preference

    if (this.selectedPattern === this.patternNormal) {
      this.errorMgs = 'Password must have min 6 char,atleast 1 num and 1 char'
    } else if (this.selectedPattern === this.patternMedium) {
      this.errorMgs = 'Minimum eight characters, at least one letter, one number and one special character'
    } else if (this.selectedPattern === this.patternHign) {
      this.errorMgs = 'Minimum eight characters, at least one uppercase letter, one lowercase letter and one number'
    }

  }
 类似资料:
  • 我正在尝试加密用于建立和连接到ActiveMQ队列的密码。我正在跟进这里的步骤,我能够使用新的activemq-security.xml文件启动ActiveMQ。我有一个脚本试图创建并连接到队列,但我不断收到用户名或密码无效的错误。 我为消费者用户加密了密码,并将加密的密码存储在credentials-enc.properties文件中,如下所示: 我尝试了不同的方法,我确信由于某种原因,cred

  • 问题内容: 正在尝试在提示(URL给定)中输入数据,以下代码给我一个错误。请帮我这些吗? 我尝试过: 这也是行不通的。 问题答案: 当你一起工作通过 3.6.1可以绕过通过嵌入的弹出和在自身如下。 此解决方案将打开URL http://the-internet.herokuapp.com/basic_auth并使用有效的username和password凭据进行身份验证。

  • 我刚接触spring,我使用《spring in action 5》一书对其进行了探索。我对我的网站做了类似的操作,我已经为页面编写了2个控制器和2个html文件。第一页是比萨饼制作表单。第二个是订单提交。我的控制器代码实际上与书中的相同。在我开始验证表单输入之前,一切都很顺利。我做了比萨饼、订购课程和控制器所需的一切。 订单类: 比萨饼类: 披萨制作控制器: 表单提交控制器: 问题在于验证比萨饼

  • 我在Angular中有一个自定义验证的表单构建器,但我在自定义验证中读取文件后无法获取文件的类型。 下面是StackBlitz: https://stackblitz.com/edit/Angular-ivy-atwqqc?file=src%2fapp%2fapp.component.ts TS文件

  • 我的springboot版本是2.3.7。我知道spring boot starter验证不是spring boot starter web的可传递依赖项。但即使单独添加了它,我的注释也不起作用。 //下面的依赖我已经添加build.gradle编译'org.springframework.boot: spring-boot-starter-validation' //我希望在请求时出错的示例类

  • 我们目前正在使用W3C Web身份验证支持的Keycloak 12.0.0无密码登录/身份验证功能(webAuthn用于无密码身份验证)。 我能够自定义身份验证流(通过keycloak的管理控制台)。使用Keycloak的“JavaScript适配器”,我们可以登录我们的Android应用程序(使用Chrome自定义标签-带指纹/设备PIN)。WebAuthn工作很好。 但在iOS14和Safar