验证ruby中的电话号码

时间:2012-06-01 10:38:03

标签: ruby regex phone-number

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

以下是我的一些规则

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

6 个答案:

答案 0 :(得分: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

答案 1 :(得分: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
"

答案 2 :(得分:3)

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

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's元数据中提取正则表达式,但要注意,它绝对是真的。

答案 3 :(得分:1)

如果你想要比正则表达更高级的东西,Twilio has an API that can do this

  

Twilio Lookup是一个REST API,可以:

     

  • 验证是否存在电话号码
  • 格式化任何国际电话   将号码转换为本地标准
  • 确定电话号码是否为小区   电话,VOIP或固定电话
  • 查找有关电话号码的信息   载体

  • 我还没用过这个!但它应该有效,但你确实需要(免费)Twilio帐户。 (此外,我与Twilio无关,除了拥有我正在玩的免费帐户。)

    答案 4 :(得分:0)

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

    答案 5 :(得分:-1)

    class Phne
    def ad
    puts "Enter your phone number"
    re=gets.chomp
    if re= ~/\b^([0-9]{10})$\b/
    puts "Valid phone number"
    else
    puts "Invalid phone number"
    end
    end
    end
    
    obj=Phne.new
    obj.ad