首页 > 解决方案 > Angular FormBuilder 美国电话号码正则表达式 (xxx) xxx-xxxx

问题描述

我正在尝试编写一个 Angular 正则表达式验证器,

匹配此模式且仅此模式适用于电话,精确空格

(444) 333-2222

如何才能做到这一点?

this.productForm = this.formBuilder.group({
  'homephoneNumber': [null, [PhoneUSValidator]],

处理此代码: 尝试在第一个括号后添加空格,不确定是否正确

export const PhoneUSValidator = Validators.pattern(/^(\d{3}\)\d{3}\-\d{4}$/);

标签: javascriptregexangular

解决方案


你需要

  • 在您期望它在字符串中的位置添加一个文字空格(或\s允许任何空格)
  • 之后转义(字符,^因为您需要匹配文字左括号。
  • 不要转义-字符类之外的内容,即不在字符类内部[...]

您可以使用

/^\(\d{3}\) \d{3}-\d{4}$/

查看正则表达式演示

细节

  • ^- 字符串的开始
  • \(- 一个(字符
  • \d{3}- 三位数
  • \)- 一个)字符
  • - 空间
  • \d{3}-\d{4}- 三位数,连字符,四位数
  • $- 字符串结束。

推荐阅读