【问题标题】:Angular2/4 Telephone ValidationAngular2/4 电话验证
【发布时间】:2018-03-07 10:10:24
【问题描述】:

我正在尝试在 Angular 2/4 中实现一个表单。有一个电话号码字段。我使用正则表达式作为

pattern="^\s*(?:\+?(\d{1,3}))?[- (]*(\d{3})[- )]*(\d{3})[- ]*(\d{4})(?: *[x/#]{1}(\d+))?\s*$"

在相应的输入字段中。它接受几乎所有格式,但不接受以下格式:

  1. 754-3010(本地)

  2. (541) 754-3010(国内)

  3. +1-541-754-3010(国际)

它应该接受 +、-、( 和 ) 字符。

希望有人能帮忙

【问题讨论】:

    标签: html regex validation angular2-forms angular4-forms


    【解决方案1】:

    您可以使用可选的非捕获组将正则表达式的一部分设为可选。

    使用

    ^\s*(?:\+?\d{1,3})?[- (]*\d{3}(?:[- )]*\d{3})?[- ]*\d{4}(?: *[x/#]\d+)?\s*$
                                  ^^^           ^^
    

    regex demo

    注意{1}是多余的,你可以删除它。

    至于捕获组,如果需要,可以保留原始组,但如果只是验证,我宁愿删除它们。

    详情

    • ^ - 字符串的开头
    • \s* - 0+ 个空格
    • (?:\+?\d{1,3})? - 可选序列:
      • \+? - 可选(1 或 0)+ 符号
      • \d{1,3} - 任何 1 到 3 位数字
    • [- (]* - -,空格或(
    • \d{3} - 任意 3 位数字
    • (?:[- )]*\d{3})? - 可选序列:
      • [- )]* - 0+ -,空格或)
      • \d{3} - 任意 3 位数字
    • [- ]* - 0+ 个空格或 -
    • \d{4} - 任意 4 位数字
    • (?: *[x/#]\d+)?
    • \s* - 0+ 个空格
    • $ - 字符串结束。

    【讨论】:

    • 很好的解释!非常感谢这个。
    猜你喜欢
    • 1970-01-01
    • 2017-07-11
    • 2017-11-06
    • 2020-02-16
    • 1970-01-01
    • 2019-06-14
    • 1970-01-01
    • 2012-10-27
    • 2015-09-05
    相关资源
    最近更新 更多