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