-4

我知道这个问题在这里被问了一千次,但我还没有掌握它。如果文本框与电话号码格式匹配,我需要帮助来检查它。格式应该是这样的:

000-000-000(+000)00-000-000。有谁能够帮我 ?

4

3 回答 3

5

试试这个模式,

^(\(\+\d{3}\)|\d)\d{2}(-\d{3}){2}$

截屏:

在此处输入图像描述

生成说明:

  • 在行首断言位置(在字符串的开头或换行符之后)^
  • 匹配下面的正则表达式并将其匹配捕获到反向引用编号 1(\(\+\d{3}\)|\d)
    • 匹配下面的正则表达式(仅在此选项失败时尝试下一个选项)\(\+\d{3}\)
      • 从字面上匹配字符“(”\(
      • 从字面上匹配字符“+”\+
      • 匹配单个数字 0..9\d{3}
        • 正好3次{3}
      • 从字面上匹配字符“)”\)
    • 或者匹配下面第2个正则表达式(如果这个匹配失败,整个组都失败)\d
      • 匹配单个数字 0..9\d
  • 匹配单个数字 0..9\d{2}
    • 正好2次{2}
  • 匹配下面的正则表达式并将其匹配捕获到反向引用编号 2(-\d{3}){2}
    • 正好2次{2}
    • 注意:您重复了捕获组本身。该组将仅捕获最后一次迭代。在重复组周围放置一个捕获组以捕获所有迭代。{2}
    • 从字面上匹配字符“-”-
    • 匹配单个数字 0..9\d{3}
      • 正好3次{3}
  • 在行尾断言位置(在字符串末尾或换行符之前)$
于 2013-04-08T08:54:46.957 回答
1

模式 1 是\d{3}\-\d{3}\-\d{3}

模式 2 是\(\+\d{3}\)\d{2}\-d{3}\-\d{3}

所以你需要匹配 Pattern1 OR Pattern2:

(\d{3}\-\d{3}\-\d{3})|(\(\+\d{3}\)\d{2}\-d{3}\-\d{3})
于 2013-04-08T08:56:06.013 回答
0
(?:\d|\(\+\d{3}\))\d{2}(?:-\d{3}){2}

或者,如果您考虑性能,最好将其更改为:

(?:\(\+\d{3}\)|\d)\d{2}(?:-\d{3}){2}
于 2013-04-08T08:54:58.103 回答