2013-03-02 61 views
0

我在軌道單元測試中出現了相當奇怪的錯誤。 我有以下的測試,由於某種原因失敗:失敗的名字和姓氏正則表達式測試

should_not allow_value('@!>::<>').for(:first_name) 

和下面的驗證在我的模型:

validates_format_of :first_name, :last_name, with: (/[\w]*/), allow_blank: true 

任何想法,爲什麼測試失敗?

PS:錯誤似乎當我改變了*+在正則表達式...但爲什麼走開!

回答

1

正則表達式/[\w]*/匹配或更多單詞字符在輸入中。由於測試字符串中沒有單詞字符,因此很高興驗證它。 /[\w]+/至少需要一個單詞字符才能匹配,這就是爲什麼它可以與您的測試字符串一起工作。

我認爲你應該使用/^[\w]*$/指定從字符串結尾開始,你只需要文字字符(特殊字符^$比賽開始和輸入結束,分別在正則表達式)。請注意,這允許空白輸入。

+0

是的,我剛剛在您發佈的regular-expressions.info上閱讀它。謝謝您的回答。 – foklepoint 2013-03-02 21:10:27

+0

你應該使用'\ A'和'\ z',而不是'^'和'$'。前者是**輸入**的開始和結束,而後者是**行**的開始和結束,所以例如名稱「Bob \ nDole」會快樂地匹配'^ \ w + $',但是將不匹配'\ A \ w + \ z'。 – charleyc 2013-03-02 21:38:32

相關問題