我需要为都柏林邮政编码构建一个Regex查询,以验证Rails应用程序中的表单。
都柏林邮政编码范围从1-22,用户输入的输入包括:
“都柏林22” “都柏林22” “dublin22” “Dublin22” “D2” “D2” “D 2” “d 2” “2”
在Ruby中,我已经开始编写长验证器方法来涵盖其中的一些。我想知道Regex中是否有更简单的解决方案。
def formatted_postal_code
# used to produce postal code in the format "Dublin 2"
if self.postal_code_is_i? && self.postal_code.to_i.between?(1, 22)
# check if postal code is an integer
self.postal_code = "Dublin " + self.postal_code
elsif
else
# capitalize postal code
self.postal_code.capitalize
end
end
def postal_code_is_i?
/\A[-+]?\d+\z/ === self.postal_code
end
感谢任何帮助或建议。
答案 0 :(得分:1)
试试这个:
test = "dublin 22"
p "true" if test =~ /^d?(ublin)?(\s)?22?$/i