我正在使用Rails 4应用程序,并且需要对加拿大邮政编码进行验证,例如“B1C 2B3”作为用户地址的一部分。在Rails中验证加拿大邮政编码的好方法是什么?
我已经找到了这颗宝石https://github.com/globaldev/going_postal,但我认为这只是为了验证而已。
是否有另一种方法来编写验证邮政编码?
我正在使用Rails 4应用程序,并且需要对加拿大邮政编码进行验证,例如“B1C 2B3”作为用户地址的一部分。在Rails中验证加拿大邮政编码的好方法是什么?
我已经找到了这颗宝石https://github.com/globaldev/going_postal,但我认为这只是为了验证而已。
是否有另一种方法来编写验证邮政编码?
我发现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 }
这不起作用。我用rails 4.2测试过。另外:http://rubular.com/r/m6pe3FUi0s –
在验证应该是(所有单斜线,没有双):/\A[ABCEGHJKLMNPRSTVXY]{1}\d{1}[A-Z]{1}[ -]?\d{1}[A-Z]{1}\d{1}\z/
我明白你问一个oneliner而不是添加一个宝石,但ju st以防其他人考虑该选项,您可以使用validates_zipcode
宝石我写了。它目前支持259个国家邮政编码格式,其中大部分来自CLDR database拍摄和播放使用Rails好的3 & 4.它有支持加拿大:)
您可以使用它像这样:
class Address < ActiveRecord::Base
validates_zipcode :zipcode
# or
validates :zipcode, zipcode: { country_code_attribute: :postal_code }
end
你能描述一个有效的加拿大邮政编码的模式(可能是正则表达式)吗?任何边缘情况? – lulalala