Как проверить индийский номер мобильного телефона, используя Pattern в Angular 6 - PullRequest
0 голосов
/ 19 сентября 2018

Как я уже упоминал в своем заголовке, я пытаюсь подтвердить, что введенный пользователем номер мобильного телефона является индийским или нет.

Для этого я привел шаблон из этого регулярного выражения для индийских мобильных номеров.

Но в моем случае всегда возвращается false.

Я хочу проверить следующее.

  • число должно начинаться с 6,7,8,9
  • должен содержать 10 цифр

app.component.html

<form class="example-form" [formGroup]="userAddressValidations">
    <mat-form-field appearance="outline" class="col-sm-6">
        <mat-label>10-digit Mobile Number</mat-label>
        <input matInput formControlName="mobileNumber" maxlength="10" (keypress)=_keyPress($event)>
        <mat-error *ngIf="userAddressValidations.get('mobileNumber').hasError('required')">
            Please fill out this field.
        </mat-error>
        <mat-error *ngIf="userAddressValidations.get('mobileNumber').hasError('pattern')">
            It is not a valid mobile number.
        </mat-error>
    </mat-form-field>

</form>

app.component.ts

export class InputErrorStateMatcherExample {
  userAddressValidations: FormGroup;
  constructor(private formBuilder: FormBuilder) { }
  ngOnInit() {
    this.userAddressValidations = this.formBuilder.group({
      mobileNumber: ['', [Validators.required, Validators.pattern('^[6-9]\d{9}$')]]
    });

  }
  _keyPress(event: any) {
    const pattern = /[0-9]/;
    let inputChar = String.fromCharCode(event.charCode);
    if (!pattern.test(inputChar)) {
        event.preventDefault();

    }
}
}

Stackblitz:https://stackblitz.com/edit/angular-mat-form-validation-eg-4jag5u?file=app%2Finput-error-state-matcher-example.ts

Может кто-нибудь помочь мне это исправить.

1 Ответ

0 голосов
/ 19 сентября 2018

Вы можете использовать

Validators.pattern('[6-9]\\d{9}')

^ и $ добавляются автоматически, когда шаблон устанавливается с помощью строкового литерала.В качестве альтернативы вы можете использовать буквенное обозначение регулярных выражений (тогда, ^ и $ обязательны):

Validators.pattern(/^[6-9]\d{9}$/)

Обратите внимание, что ^ и $ не играют никакой роли в этом конкретном фрагменте, так как выограничьте количество входных символов с атрибутом maxlength="10".

См. итоговую демонстрацию регулярных выражений и обновленную демонстрацию Stackblitz .

...