首页 > 解决方案 > 带有国家代码的电话号码的正则表达式

问题描述

这种格式的电话号码的正则表达式是什么+91-9999999999

格式:+(country code)-(10 digit phone number)

我发现了许多与此类似的问题,例如:Regex for phone number with country code

但它们并不特定于这种格式。

另外,如果可能的话,您能否告诉我如何在 ruby​​ 中使用它,或者我会自己弄清楚。

标签: regexruby

解决方案


请不要以这种方式验证用户输入。如果您尝试验证用户输入,通常最好验证您的位数是否正确,然后进行自己的格式化。要验证您的输入字符串中有 11-13 位数字,即使它的格式不完美,请考虑以下事项:

input = " + ( 11 ) 123-456-7890 "
input.delete! "^0-9"
input.length >= 11 && input.length <= 13
#=> true

input_chars = input.chars
phone_number, country_code = input_chars.pop(10).join, input_chars.join
p formatted_number = "+(%d) %d" % [country_code, phone_number]
#=> "+(11) 1234567890"
  

另一方面,如果您有一个要验证格式本身的数据集,那就另当别论了。您可以查找 1-3 位数字,后跟 10 位数字,以及您要查找的任何锚点或格式。例如:

expected_format = /\A\+\d{1,3}-\d{10}\z/

input =  "+91-9999999999"
input.match? expected_format
#=> true

input =  "91-9999999999"
input.match? expected_format
#=> false

input = "+1111-012345689"
input.match? expected_format
#=> false

推荐阅读