Regex Angular 5表单自定义验证工作不正常

Regex Angular 5表单自定义验证工作不正常,regex,typescript,angular5,Regex,Typescript,Angular5,我正在处理Angular 5,我有一个带有字段用户名的表单。我想为最小字符长度集成一个自定义验证,并避免空白 <input type="text" class="form-control " id="account-details-username" placeholder="" formControlName="username" > <div *ngIf="form.get('accountDetails.username').touched &&a

我正在处理Angular 5,我有一个带有字段用户名的表单。我想为最小字符长度集成一个自定义验证,并避免空白

<input type="text" class="form-control " id="account-details-username" placeholder="" formControlName="username" >
        <div *ngIf="form.get('accountDetails.username').touched && form.get('accountDetails.username').invalid" class="alert alert-danger">
          <div *ngIf="form.get('accountDetails.username').errors.required">Username is required.</div>
          <div *ngIf="form.get('accountDetails.username').errors.minimumSix">Username must contain at least 6 characters</div>
          <div *ngIf="form.get('accountDetails.username').errors.blankSpace">Username does not contain blank space.</div>
        </div>

不检查空白验证。

对于空白,我建议以下解决方案

const blankSpace = /^\S*$/;

if (!blankSpace.test(control.value)) {
    console.log("blank");
    return { 'blankSpace': true };    
}
因此,您的完整方法应如下所示:

test(control: any) {
    const minimumSix = new RegExp("^[a-zA-Z0-9!@#$%^&*]{6,}");
    const blankSpace = /^\S*$/;

    if (!minimumSix.test(control.value)) {
      return { 'minimumSix': true };
    }

    if (!blankSpace.test(control.value)) {
        console.log("blank");
        return { 'blankSpace': true };    
    }

    return null;
}

也许可以通过将
ng trim=“false”
添加到
input
中来解决这个问题?我理解对了吗?你的问题是,“空白验证”根本不起作用?是的@DiabolicWords
test(control: any) {
    const minimumSix = new RegExp("^[a-zA-Z0-9!@#$%^&*]{6,}");
    const blankSpace = /^\S*$/;

    if (!minimumSix.test(control.value)) {
      return { 'minimumSix': true };
    }

    if (!blankSpace.test(control.value)) {
        console.log("blank");
        return { 'blankSpace': true };    
    }

    return null;
}