我最近切換到Rails 4和安全要求似乎不再允許使用/^..$/風格的正則表達式。該錯誤指出正則表達式應改爲以/\A..\z/的樣式編寫。做出這一改變似乎解決了我所有的服務器端驗證問題,但不幸的是,它也打破了我在javascript中的所有客戶端驗證。RegExp A z does not work,但多數民衆贊成什麼Rails 4要求
一個簡單的例子。我想驗證用戶名是字母,數字還是句點。
舊的正則表達式看起來像/^[0-9a-zA-Z.]+$/和工作兩者服務器端(Rails的3.X)和客戶端
new RegExp(/^[0-9a-zA-Z.]+$/).test('myuser.name') = true
新的正則表達式看起來像/\A[0-9a-zA-Z.]+\z/和工作服務器端,但未能客戶端
new RegExp(/\A[0-9a-zA-Z.]+\z/).test('myser.name') = false
所以我清楚自己做錯事,但我似乎無法找到任何解釋。我檢查了\ A \ \ z是有效的正則表達式,以確保它不是一些Rails特定的黑客攻擊,它似乎是合法的。
任何想法?
[MDN Regular Expressions](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions) – epascarello