0

我在 Rails 的单元测试中遇到了一个非常奇怪的错误。我有以下测试由于某种原因失败:

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

以及我的模型中的以下验证:

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

关于为什么测试失败的任何想法?

PS:*当我将正则表达式中的a更改为时,错误似乎消失+了……但是为什么!

4

1 回答 1

1

正则表达式/[\w]*/匹配输入中的个或多个单词字符。由于您的测试字符串中没有单词字符,因此它很乐意验证它。/[\w]+/至少需要一个单词字符才能匹配,这就是它适用于您的测试字符串的原因。

我认为您应该使用/^[\w]*$/来指定从字符串的开头到结尾,您只需要单词字符(特殊字符^$分别在正则表达式中匹配输入的开头和结尾)。请注意,这允许空白输入。

于 2013-03-02T21:09:05.990 回答