失败的名字和姓氏正则表达式测试

时间:2013-03-02 20:52:30

标签: ruby-on-rails regex unit-testing

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

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

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

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

关于测试失败原因的任何想法?

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

1 个答案:

答案 0 :(得分:1)

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

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