JavaScript正则表达式帮助:验证电话号码,但不包括555个号码(匹配此号码,但不匹配该号码)

JavaScript正则表达式帮助:验证电话号码,但不包括555个号码(匹配此号码,但不匹配该号码),javascript,jquery,regex,Javascript,Jquery,Regex,我正在使用一个CMS,它包括构建表单的功能,并对这些表单使用JS验证。如果需要,我们可以用自己的正则表达式替换现有的验证规则 目前,适用于电话号码字段的正则表达式为: ^(1\s*[-/.]?)(((\d{3}))|(\d{3}))\s*[-/.]?\s*(\d{3})\s*[-/.]?\s*(\d{4})\s*([xX][eE][xX][tT])。?\s*(\d+)*$ 这样可以,但我们也希望排除区号为555的号码或交换机。虽然这些数字在技术上符合电话号码规范,但决策者希望将其过滤掉,因为它们

我正在使用一个CMS,它包括构建表单的功能,并对这些表单使用JS验证。如果需要,我们可以用自己的正则表达式替换现有的验证规则

目前,适用于电话号码字段的正则表达式为:

^(1\s*[-/.]?)(((\d{3}))|(\d{3}))\s*[-/.]?\s*(\d{3})\s*[-/.]?\s*(\d{4})\s*([xX][eE][xX][tT])。?\s*(\d+)*$

这样可以,但我们也希望排除区号为555的号码或交换机。虽然这些数字在技术上符合电话号码规范,但决策者希望将其过滤掉,因为它们通常不是“真实”的数字

我不是一个足够的正则表达式大师,不知道如何处理“匹配这个,但不是那个”这样的表达。有人能提供任何建议/帮助吗

谢谢

我不知道电话号码中的“区号”或“交换”部分在哪里,但您所要做的就是在相关部分之前添加一个负前瞻

例如,除了555之外,这将匹配三个数字:
(?!555)\d{3}

我不知道电话号码中的“区号”或“交换”部分在哪里,但您所要做的就是在相关部分之前添加一个负前瞻


例如,除了555之外,它将匹配三个数字:
(?!555)\d{3}
您可以使用
(?!555)
进行负前瞻。将其放在
^(1\s*[-/.]?)?
后面。你可以用
(?!555)
做一个消极的前瞻。将其放在
^(1\s*[-/.]?)?
后面。排除这些数字可能不值得你花时间。通过这样做(并且首先拥有如此严格的正则表达式),你已经将美国以外的世界大部分地区排除在外。我建议你降低进入门槛,特别是如果这些表格被用来以任何方式赚钱。如果你问多个问题,“这是电话号码吗?”,“这是‘555-’号码吗?”然后我会将它分离成单独的(注释的)代码行,而不是构建一个庞大的、不可读的正则表达式<代码>isPhoneNumber(str)&!startsWith('555',str)排除这些数字可能是不值得的。通过这样做(并且首先拥有如此严格的正则表达式),你已经将美国以外的世界大部分地区排除在外。我建议你降低进入门槛,特别是如果这些表格被用来以任何方式赚钱。如果你问多个问题,“这是电话号码吗?”,“这是‘555-’号码吗?”然后我会将它分离成单独的(注释的)代码行,而不是构建一个庞大的、不可读的正则表达式<代码>isPhoneNumber(str)&!开始使用('555',str)