-1

我正在尝试为电话号码创建模式,我希望看起来像这样:

  1. +375 29 555 55 55
  2. 80-33-555-555-55
  3. +375-25-555-55-55
  4. 80445555555等

我写了以下代码:

.ts

  phoneFormControl = new FormControl('', [Validators.required, Validators.pattern('^\s*(\+375|80)\s?-?\s?(25|29|33|44)\s?-?\s?\d{3}\s?-?\s?\d{2}\s?-?\s?\d{2}$')]);

.html

<mat-form-field class="example-full-width">
      <mat-label>Телефон</mat-label>
      <input matInput [(ngModel)]="this.profileData.Phone" [formControl]="phoneFormControl" maxlength="30">
      <mat-error *ngIf="phoneFormControl.hasError('pattern')">Номер не соответствует формату!</mat-error>
    </mat-form-field>

但我有错误: 在此处输入图像描述

A 还尝试将 .ts 更改为此phoneFormControl = new FormControl('', [Validators.required, Validators.pattern('^\s*80\s?-?\s?(25|29|33|44)\s?-?\s?\d{3}\s?-?\s?\d{2}\s?-?\s?\d{2}$')]); ,期望它仅适用于 80... 错误消失了,但现在无法正常工作(我使用 80295555555 80-29-555-55-55 80 33 555 55 55) ...

我也试过这个:

 phoneFormControl = new FormControl('', [Validators.required, Validators.pattern('/^\s*([+]{1}375|80)\s?-?\s?(25|29|33|44)\s?-?\s?\d{3}\s?-?\s?\d{2}\s?-?\s?\d{2}$/')]);

我该怎么做才能得到预期的结果?

4

1 回答 1

-2

我不是 100% 确定,但似乎你有一个错字。

如果您查看官方文档中的示例,您会发现您不需要^$在您的正则表达式字符串的开头和结尾。

因此,您可能只需将代码更改为:

phoneFormControl = new FormControl('', [Validators.required, Validators.pattern('\s*(\+375|80)\s?-?\s?(25|29|33|44)\s?-?\s?\d{3}\s?-?\s?\d{2}\s?-?\s?\d{2}')]);
于 2021-02-28T16:16:25.747 回答