Rails 正则表达式语法错误

Jea*_*ste 1 ruby regex ruby-on-rails

我正在尝试使用以下代码在表单上设置正则表达式验证。我想允许任何字母字符,包括重音、数字和连字符、撇号、逗号和空格。此表达式应与结果匹配:“Tir à l'arc, 3d, danse”

validates :interest_list, tags: true, if: lambda { interest_list.any? }
  validates :interest_list, format: { with: /\A[[:alpha:]\d-'’, ]\z/, message: "only allows letters, space, hyphen and apostrophe" }
Run Code Online (Sandbox Code Playgroud)

但是我在字符类中有这个错误空范围: /\A[[:alpha:]\d-'',]\z/

谁能告诉我我做错了什么?

sma*_*thy 5

任何-出现在字符类中除第一个或最后一个位置之外的任何位置都被视为一个范围,即。[0-9]是 的简写[0123456789]。此范围是根据 ASCII 值计算的。

\d-'在你的正则表达式中并且\d不能用于范围的开始/结束。可能你想要的是移动-到你的开始或结束[]

/\A[[:alpha:]\d'’, -]\z/
Run Code Online (Sandbox Code Playgroud)

...并解决您的下一个问题/问题-因为您的正则表达式仅匹配单个字符,您可能还希望在该字符类上重复,例如+

/\A[[:alpha:]\d'’, -]+\z/
Run Code Online (Sandbox Code Playgroud)