我在rails 4应用程序上工作,需要验证是否符合加拿大邮政编码,如“B1C2B3”作为用户地址的一部分。我已经找到了这块宝石,但我认为这是过度杀戮,只是为了验证一下。有没有其他方法来编写邮政编码的验证?
kq4fsx7k1#
我知道你要求的是一个线条,而不是添加一个宝石,但以防其他人考虑这个选项,你可以使用我写的**validates_zipcodegem。它目前支持259个国家**的邮政编码格式,其中大部分来自CLDR database,与rails 3和4配合得很好。它确实支持加拿大:)您可以这样使用它:
validates_zipcode
class Address < ActiveRecord::Base validates_zipcode :zipcode # or validates :zipcode, zipcode: { country_code_attribute: :postal_code } end
wwodge7n2#
我发现on debuggex(一个很棒的regex测试站点)加拿大的邮政编码regex是
[ABCEGHJKLMNPRSTVXY]{1}\d{1}[A-Z]{1}[ -]?\d{1}[A-Z]{1}\d{1}
要根据该模式检查字符串,请执行以下操作以进行验证:
CANADIAN_POSTAL_CODE_FORMAT = /\A[ABCEGHJKLMNPRSTVXY]{1}\d{1}[A-Z]{1}[ -]?\d{1}[A-Z]{1}\d{1}\z/ validates :postal_code, format: { with: CANADIAN_POSTAL_CODE_FORMAT }
hgc7kmma3#
在验证中应为(全是单斜杠,不是双斜杠):/A[ABCEGHJKLMNPRSTVXY]{1}d{1}[A-Z]{1}[ -]?d{1}[A-Z]{1}d{1}z/
/A[ABCEGHJKLMNPRSTVXY]{1}d{1}[A-Z]{1}[ -]?d{1}[A-Z]{1}d{1}z/
3条答案
按热度按时间kq4fsx7k1#
我知道你要求的是一个线条,而不是添加一个宝石,但以防其他人考虑这个选项,你可以使用我写的**
validates_zipcode
gem。它目前支持259个国家**的邮政编码格式,其中大部分来自CLDR database,与rails 3和4配合得很好。它确实支持加拿大:)您可以这样使用它:
wwodge7n2#
我发现on debuggex(一个很棒的regex测试站点)加拿大的邮政编码regex是
要根据该模式检查字符串,请执行以下操作以进行验证:
hgc7kmma3#
在验证中应为(全是单斜杠,不是双斜杠):
/A[ABCEGHJKLMNPRSTVXY]{1}d{1}[A-Z]{1}[ -]?d{1}[A-Z]{1}d{1}z/