代码之家  ›  专栏  ›  技术社区  ›  Optiq

如何设置一个regexp,并在使用时同时使用可选的“(”和”)?

  •  3
  • Optiq  · 技术社区  · 6 年前

    我需要创建一个注册表达式来验证我们的电话号码。国家代码是可选的,并且在区号周围加上括号。到目前为止我有这个

    /^[1]?[-. ]?\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/
    

    它是有效的,但是它将允许像

    1 555)555 5555

    1(555 555 5555)

    我需要用某种方式告诉你 () 是可选的,但是如果用户使用它,他们也必须正确关闭它。这是怎么做到的?

    1 回复  |  直到 6 年前
        1
  •  4
  •   revo shanwije    6 年前

    你必须与分支机构合作:

    ^1?[-. ]?(?:\((\d{3})\)|(\d{3}))[-. ]?(\d{3})[-. ]?(\d{4})$
                ^^^^^^^^^^^^^^^^^^^
    

    交替的第一面用一对圆括号,另一面只用数字。这样就不允许出现不平衡的括号。

    Live demo