正如我在标题中提到的那样,我正在尝试验证用户输入的手机号码是否是印度号码。
为此,我引用了此regular expression for Indian mobile numbers
中的模式但是对于我来说,它总是返回false。
我要验证以下内容。
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();
}
}
}
谁能帮我修复它。
答案 0 :(得分:3)
您可以使用
Validators.pattern('[6-9]\\d{9}')
借助字符串文字设置模式时,会自动添加^
和$
。或者,您可以使用正则表达式文字符号(然后,^
和$
是必需的):
Validators.pattern(/^[6-9]\d{9}$/)
请注意,^
和$
在此具体代码段中不起作用,因为您使用maxlength="10"
属性限制了输入字符的数量。
答案 1 :(得分:0)
这是在Angular中验证移动电话号码的最简单方法。
<input class="input" id="phoneNumber" type="tel" placeholder="Your Mobile number [(ngModel)]="phone_number" pattern="^[7-9][0-9]{9}$" ngModel phone #phone="ngModel" maxlength="10" minlength="10">
<div class="" *ngIf="phone.touched && !phone.valid">
<div class="tag" *ngIf="phone.errors.required">Mobile No. is required.
</div>
<div class="tag" *ngIf=" phone.errors.pattern">Inaild Mobile Number</div>
</div>