2015-09-26 120 views
2

我需要为都柏林邮政编码构建正则表达式查询来验证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

如果你说,“包括输入:”,你提供的例子或者是可能性的全部范围?你真的需要提供后者。 “都柏林<额外空间> 22”? “都柏林02”? “d-22”? “DUBlin 22”? –

回答

1

尝试这样的:

test = "dublin 22" 

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