Rails使用正则表达式验证不起作用吗?

fab*_*bbb 1 regex ruby-on-rails ruby-on-rails-4

简单的正则表达式无法正常工作。例如first_name = "a11"工作正常。为什么我的格式正则表达式无法正确验证?

  validates :first_name, presence: { message:  "Name cannot be blank." },
                         format: { with: /[a-z]/i, message:  "Name must only contain letters." },
                         length: { minimum: 2, message:  "Name must be at least 2 letters." }
Run Code Online (Sandbox Code Playgroud)

xda*_*azz 5

因为它与您的正则表达式匹配。

您必须指定字符串的开始和结尾,并添加*或仅匹配一个字符。

format: { with: /\A[a-z]*\z/i, message:  "Name must only contain letters." },
Run Code Online (Sandbox Code Playgroud)

还要注意不要用^$,红宝石,^以及$相匹配的开始和结束,而不是字符串,所以它会在多行字符串被打破。