App.component.html
<form [formGroup]="exampleForm">
<div class="form-group">
<label>First Name</label>
<input type="text" formControlName="phoneNumber" class="form-control" >
</div>
</form>
App.component.ts
exampleForm: FormGroup;
number_pattern=' ^[0-9_-]*$ ';
constructor(private formBuilder: FormBuilder) { }
ngOnInit() {
this.exampleForm = this.formBuilder.group({
phoneNumber: ['', Validators.required, Validators.pattern(number_pattern)]
});
}
我需要具有以下规则的手机正则表达式,我尝试了正则表达式代码,但它不起作用。
- 字段不得为空。
- 数字之间接受连字符和空格,但不接受开头和结尾。
- 不得包含除数字、空格或连字符以外的任何内容
- 字段不得仅包含空格
- 字段不得仅包含连字符
- 字段不得仅包含连字符和空格。
提前致谢。
最佳答案
尝试以下模式:
^\d([0-9 -]{0,10}\d)?$
console.log(/^\d([0-9 -]{0,10}\d)?$/.test('123')); // pass
console.log(/^\d([0-9 -]{0,10}\d)?$/.test('1-2 3')); // pass
console.log(/^\d([0-9 -]{0,10}\d)?$/.test('1-2-3-4-5-6')); // pass
console.log(/^\d([0-9 -]{0,10}\d)?$/.test('1-2-3-4-5-6-')); // fail
console.log(/^\d([0-9 -]{0,10}\d)?$/.test('123456789012')); // pass
console.log(/^\d([0-9 -]{0,10}\d)?$/.test('1234567890123')); // fail
console.log(/^\d([0-9 -]{0,10}\d)?$/.test('- --')); // fail
上面失败的三个例子是因为:
1-2-3-4-5-6-
以连字符结尾,而不是数字1234567890123
有 13 位数字,太长---
仅包含连字符和空格
关于JavaScript RegExp 用于电话号码验证,需要在数字之间允许连字符和空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52906069/