我想使用 Javascript 中的正则表达式验证 10 位美国风格的电话号码,然后通过 url 将其提交到 PHP 服务器。这将是一个表单中的简单文本框,用于输入数字和提交按钮。
例如,在验证之后,url 可能是:
thisdomainname.com/resultspage.php?phonenumber=4392931234
我知道正则表达式是如何工作的,但对更复杂的表达式感到困惑。我在 stackoverflow 和互联网上搜索了一个解决方案,发现了几个但没有一个完全符合我的需要和/或在我运行它时可以工作。
我需要它来省略所有非数字字符(例如括号、破折号和句点),并且还省略在美国 10 位电话号码中可选的额外前导“1”。
它应该允许(验证为正确)以下格式:
1-(805) xxx-xxxx
215.xxx.xxxx
但拒绝为无效:
805 931 42
805 931 42ab
105 931 4288
理想情况下,它将根据“北美编号计划”允许电话号码,该计划具有以下规则:
“区号以 2-9 的数字开头,然后是 0-8,然后是任何第三个数字。第二组三位数字,称为中心局或交换代码,以 2-9 的数字开头,然后是任意两位数字。最后四位数字,称为站号,没有限制。
我在下面找到了一个正则表达式来实现它,但我无法让它与可选的前导“1”数字一起使用。
^\(?([2-9][0-8][0-9])\)?[-. ]?([2-9][0-9]{2})[-. ]?([0-9]{4})$
就像我说的,我已经找到了很多解决这个问题的解决方案,但是没有一个适用于我上面列出的所有情况。
提前致谢。