6

验证北美电话号码的规则是什么?另外,有regex我可以使用的吗?有宝石可以做到这一点吗?

这是我想到的几条规则

  1. 一个 10 位数字
  2. 没有特殊字符
  3. 一个正数
4

6 回答 6

7

有许多宝石可以为您做到这一点。

看看:http ://rubygems.org/search?utf8=%E2%9C%93&query=phone+number

这个看起来会满足你的需要——它本质上实现了一个正则表达式来验证电话号码:http ://rubygems.org/gems/validates_phone_number

对于美国、加拿大(百慕大、巴哈马......等以及所有 +1 号码),正则表达式应遵循其他规则。第一个数字(+1 之后)必须是 2-9。

如需完整列表,请参阅:http ://en.wikipedia.org/wiki/North_American_Numbering_Plan

于 2012-06-01T10:49:10.710 回答
4

试试这个

(?:\+?|\b)[0-9]{10}\b

解释

@"
(?:         # Match the regular expression below
               # Match either the regular expression below (attempting the next alternative only if this one fails)
      \+          # Match the character “+” literally
         ?           # Between zero and one times, as many times as possible, giving back as needed (greedy)
   |           # Or match regular expression number 2 below (the entire group fails if this one fails to match)
      \b          # Assert position at a word boundary
)
[0-9]       # Match a single character in the range between “0” and “9”
   {10}        # Exactly 10 times
\b          # Assert position at a word boundary
"
于 2012-06-01T10:41:55.357 回答
3

我在perl 代码中用于验证 NANP 电话号码的规则来自 Doug Newell 发送到 telnum-l 邮件列表的电子邮件,我在下面复制了该邮件,稍微简化为仅考虑完整的 10 位数字:

The number 10 digits long.  We'll call this pattern:
    ABC DEF XXXX

A may not be 0 or 1.

B may not be 9.

A+B may not be 37 or 96.

B+C may not be 11.

D may not be 0 or 1.

您也许可以从libphonenumber 的元数据中提取正则表达式,但请注意,它简直就是地狱。

于 2012-06-13T15:58:20.440 回答
1

如果你想要比正则表达式更高级的东西,Twilio 有一个 API 可以做到这一点

Twilio Lookup 是一个 REST API,它可以:

  • 验证电话号码是否存在
  • 将任何国际电话号码格式化为其本地标准
  • 确定电话号码是手机、VOIP 还是固定电话
  • 发现有关电话号码运营商的信息

  • 这个我还没用过!但它应该可以工作,尽管您确实需要一个(免费的)Twilio 帐户。(此外,我不隶属于 Twilio,只是拥有一个我正在玩的免费帐户。)

    于 2016-07-10T06:27:48.943 回答
    0

    我在这里写了一个 gem:https ://github.com/travisjeffery/validates_phone_number可以做你想做的事,如果你有任何问题或问题请告诉我。

    于 2012-07-07T20:50:52.693 回答
    -1
    类Phne
    默认广告
    放“输入你的电话号码”
    re=gets.chomp
    如果重新= ~/\b^([0-9]{10})$\b/
    放“有效的电话号码”
    别的
    提出“无效的电话号码”
    结尾
    结尾
    结尾
    
    obj=Phne.new
    对象广告
    
    于 2016-09-27T05:43:54.917 回答