2

我正在使用以下正则表达式

VALID_WEBSITE_REGEX = /^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,6}(:[0-9]{1,5})?(\/.*)?$/ix

使用此规则验证网站条目:

validates :website, length: { maximum: 150 }, format: { with: VALID_WEBSITE_REGEX }

(150 是任意的)。

但是,当我保存/更新表单时,我收到一个验证错误“网站无效”。如何确保仅在有内容要处理时才处理验证规则的“格式”部分?

4

2 回答 2

4

您可以使用 allow_blank 选项进行验证

:allow_blank => true 

如果属性的值为空白,此选项将让验证通过?例如 nil 或空字符串。阅读更多: http: //guides.rubyonrails.org/active_record_validations_callbacks.html#allow_blank

于 2012-05-11T08:51:19.213 回答
0

用操作员将整个事物括起来?,例如

VALID_WEBSITE_REGEX = /^((http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,6}(:[0-9]{1,5})?(\/.*)?)?$/ix

如果您也想允许空格,请\s*在每一端添加,例如

VALID_WEBSITE_REGEX = /^\s*((http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,6}(:[0-9]{1,5})?(\/.*)?)?\s*$/ix
于 2012-05-11T08:46:48.113 回答