在Rails中验证加拿大邮政编码的好方法是什么?

时间:2013-10-14 03:32:31

标签: ruby ruby-on-rails-4

我正在使用Rails 4应用程序,需要验证加拿大邮政编码,例如" B1C 2B3"作为用户地址的一部分。

我找到了这个宝石https://github.com/globaldev/going_postal,但我认为只是为了验证而已经过了杀戮。

是否有其他方法可以为邮政编码编写验证?

3 个答案:

答案 0 :(得分:4)

我理解你要求oneliner而不是添加gem,但是如果其他人考虑了这个选项,你可以使用我写的 validates_zipcode gem。它目前支持 259个国家/地区邮政编码格式,其中大多数来自CLDR database 并且与Rails 3&它确实支持加拿大:)

你可以像这样使用它:

class Address < ActiveRecord::Base
  validates_zipcode :zipcode
  # or
  validates :zipcode, zipcode: { country_code_attribute: :postal_code }
end

答案 1 :(得分:3)

我发现on debuggex(一个很棒的正则表达式测试网站)加拿大邮政编码正则表达式

[ABCEGHJKLMNPRSTVXY]{1}\d{1}[A-Z]{1}[ -]?\d{1}[A-Z]{1}\d{1}

要针对该模式检查字符串,请执行以下操作进行验证:

canadian_postal_code = /\A[ABCEGHJKLMNPRSTVXY]{1}\\d{1}[A-Z]{1}[ -]?\\d{1}[A-Z]{1}\\d{1}\z/
validates :postal_code, format: { with: canadian_postal_code }

答案 2 :(得分:0)

在验证中应该是(所有单斜线,不是双精度):/\A[ABCEGHJKLMNPRSTVXY]{1}\d{1}[A-Z]{1}[ -]?\d{1}[A-Z]{1}\d{1}\z/

相关问题