Ruby on rails 使用regex ruby 1.9.2验证点和逗号

Ruby on rails 使用regex ruby 1.9.2验证点和逗号,ruby-on-rails,ruby,regex,activerecord,validation,Ruby On Rails,Ruby,Regex,Activerecord,Validation,我的模型帖子中有一个正则表达式: validates_format_of :description, :username, :with => /^(?:[^\W_]|\s)*$/u, :message => "should only contain letters, numbers, or .,-_@" 但是这个正则表达式不允许点“”和逗号“,” 我想允许将此字符添加到此正则表达式。 我怎样才能让这个正则表达式在诸如username或用于验证字母、数字、逗号、点等的textarea

我的模型帖子中有一个正则表达式:

validates_format_of :description, :username, :with => /^(?:[^\W_]|\s)*$/u, :message => "should only contain letters, numbers, or .,-_@"
但是这个正则表达式不允许点“”和逗号“

我想允许将此字符添加到此正则表达式。


我怎样才能让这个正则表达式在诸如username或用于验证字母、数字、逗号、点等的textarea等字段中正常工作呢?

注意,在Ruby中,
^
$
表示“行的开始”和“行的结束”,而不是“字符串的开始”和“字符串的结束”;因此,您的正则表达式实际上匹配任何至少包含一行字母、数字和空格的字符串。@ruakh所说的很重要,您需要使用
\A
\Z
锚定到字符串的开头和结尾注意,此正则表达式可以显著简化:它相当于
/^[\w\s,@]*$/u
。它应该用
\A
\z
锚定。
validates_format_of :description, :username, :with => /^(?:[^\W_]|\s|[\.,_@])*$/u, :message => "should only contain letters, numbers, or .,-_@"