我正在使用Rails 4应用程序,需要验证加拿大邮政编码,例如" B1C 2B3"作为用户地址的一部分。
我找到了这个宝石https://github.com/globaldev/going_postal,但我认为只是为了验证而已经过了杀戮。
是否有其他方法可以为邮政编码编写验证?
答案 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/