2
我正在使用Rails 4.0和Ruby 1.9.3。我有验证两个不同的所在领域的两个REGEXs:REGEX验证无法在Rails 4上工作
PRICE_REGEX = /[0-9]+/
VALID_REGEX = /[a-zA-z0-9]*/
validates :price, presence: true, format: { with: PRICE_REGEX }
validates :title, length: { maximum: 20 }, format: { with: VALID_REGEX } #not a required field.
在我的形式,我使用的form_for并有表示为这些领域:
<li>
<div class="msglabel">Price:</div>
<%= f.text_field :price, class:"textArea" %>
</li>
<li>
<div class="msglabel">Title:</div>
<%= f.text_field :title, class:"textArea" %>
</li>
不幸的是,这些都是工作。我可以在任何一个字段中输入任何ASCII字符,他们会接受它们。该VALID_REGEX的作品,当我使用
VALID_REGEX = /[a-zA-z0-9]+/
但随后它不会接受一个空场,这是我需要它,因为它不是必需的。
我在做什么错,我该如何纠正它?
编辑
我已经添加了\ A和\ Z ^锚的正则表达式:
PRICE_REGEX = /\A[0-9]+\z/
VALID_REGEX = /\A[a-zA-Z0-9]*\z/
所以VALID_REGEX是工作,但PRICE_REGEX甚至不会现正接受适当的投入,如5000.我已经通过Rubular进行了测试,它完美地工作,但我的应用程序根本不会接受任何输入。
试了锚。当我尝试加载页面时,Rails发出了这个错误: “提供的正则表达式使用多行锚(^或$),这可能会带来安全风险。是否使用\ A和\ z或忘记添加:multiline => true选项?“ – adnann
@ user2567161跟那个建议一起去..编辑 – Anirudha
明白了!将^和$替换为\ A和\ z作为指定的错误,现在可以工作。谢谢! – adnann