【发布时间】:2019-05-31 19:59:08
【问题描述】:
我正在尝试使用以下逻辑创建一个正则表达式字符串以匹配电话号码:
1) NPA(区号),3位数字,第一位是[2-9],第二位和第三位是[0-9]
2) 对于 NXX(交换 – NPA 之后的 3 位数字),规则与 NPA 相同。另外,如果第 2 位为“1”,则第 3 位不能为“1”(为公共服务保留)
3) 对于 XXXX(数字 - NXX 之后的接下来的 4 位数字),4 位数字中的每一个都是 [0-9]。
我已经使用以下字符串完成了第 1 步和第 3 步以及第 2 步的一部分:
^\(?([2-9]{1})\)?([0-9]{2})?[-.*]?([2-9]{1})\)?([0-9]{2})?[-.*]?([0-9]{4})$
但我坚持尝试合并此处所述的逻辑:
对于 NXX(交换 - NPA 之后的下 3 位数字),规则与 NPA 相同。另外,如果第 2 位为“1”,则第 3 位不能为“1”(为公共服务保留)
如果有人可以帮助阐明这一点,将不胜感激。
False 是我希望我的正则表达式不匹配的内容,而 true 是我希望它继续匹配的内容。它目前匹配两组。
错误:4807119320 4805119439 4809114739
正确:4805218482 4805123848 4809128327 4809418482
【问题讨论】:
-
我认为如果你能在你的问题中添加一些应该和不应该匹配的例子会有所帮助。
-
我很抱歉,你是对的,所以这里有两个例子。 False 是我希望我的正则表达式不匹配的内容,而 true 是我希望它继续匹配的内容。它目前匹配两组。错误:4807119320 4805119439 4809114739 正确:4805218482 4805123848 4809128327 4809418482
标签: regex