如何只允许/验证以特定字符开头的字符串



我现在正试图弄清楚如何在加拿大邮政编码存储在rails数据库中之前验证它们。但我不想在验证中使用regex。我想存储一个以某些字符开头的现有邮政编码,然后不在乎后面的字符,只要初始字符与我设置的字符匹配。

例如,如果有人输入V7C2X2V7C1X1V7B1X1,它应该接受它,因为它以字符V7CV7B开头。它应该拒绝任何不是以V7CV7B开头的条目。

我现在有这个:

class Postal < ApplicationRecord
validates_inclusion_of :postalcode, :in => ["V7C", "V7B"]
end

检查validates_format_of。您可以执行以下操作:

validates_format_of :postalcode, with: /^(V7B|V7C)/

也可以不带:/**/

您可以使用自定义验证器。

class Postal < ApplicationRecord
validate :code_includes
private
def code_includes
["V7C","V7B"].include? postalcode
end
end

这只会检查postalcode是否有这两个字符串中的任何一个作为子字符串。

要检查postalcode是否从这两个中的一个开始,你可以进行

class Postal < ApplicationRecord
validate :code_starts_with
private
def code_starts_with
postalcode.start_with?("V7C","V7B")
end
end

相关内容

  • 没有找到相关文章

最新更新