JavaScript RegExp 用于电话号码验证,需要在数字之间允许连字符和空格

标签 javascript regex angular-reactive-forms phone-number

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)]
        });
    }

我需要具有以下规则的手机正则表达式,我尝试了正则表达式代码,但它不起作用。

  1. 字段不得为空。
  2. 数字之间接受连字符和空格,但不接受开头和结尾。
  3. 不得包含除数字、空格或连字符以外的任何内容
  4. 字段不得仅包含空格
  5. 字段不得仅包含连字符
  6. 字段不得仅包含连字符和空格。

提前致谢。

最佳答案

尝试以下模式:

^\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/

相关文章:

javascript - 对于这种格式有好的 jquery/javascript 日期和时间选择器吗?

python - 如何加快读取多个文件并将数据放入数据框中?

angular - writeValue 在自定义表单控件中具有无效值

javascript - 使用 Vue.js 和 Laravel 设置复选框

javascript - 如何将对象方法传递给javascript中的数组方法

javascript - 将模型转换为 JSON 并将其传递给 JavaScript setOnLoadCallBack

regex - 带有捕获组的有效正则表达式,但 sed 脚本不起作用

c# - 提取版本号

javascript - 响应式(Reactive)表单不更新表单字段 Angular 7 中的值

javascript - 如何在 Angular 中为自定义验证器添加自定义验证错误消息