都柏林邮政编码的正则表达式

时间:2015-09-26 12:19:19

标签: ruby-on-rails ruby regex

我需要为都柏林邮政编码构建一个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

感谢任何帮助或建议。

1 个答案:

答案 0 :(得分:1)

试试这个:

test = "dublin 22"

p "true" if test =~ /^d?(ublin)?(\s)?22?$/i