如何验证字符串的第一个字符不是整数?

use*_*882 2 ruby regex validation ruby-on-rails ruby-on-rails-3

我正在使用Ruby on Rails 3.2.9,我想验证名称(a String)的第一个字符不是数字(Integer).我想使用以下代码:

class User < ActiveRecord::Base
  validates_each :name do |record, attr, value|
    record.errors.add(attr, 'cannot begin with a number') if ... # the first char is a number
  end
end
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

ror*_*rra 5

record.errors.add(attr, 'cannot begin with a number') if value =~ /^[0-9].*/
Run Code Online (Sandbox Code Playgroud)

这将匹配任何第一个字符是数字的字符串

  • 从技术上讲,它并没有真正做到这一点.你真的想要:`/\A\d /` (2认同)
  • `[0-9]`和`\ d`在技术上是相同的,但`\ d`更简单,更容易我们一目了然地解析和理解,因此,更容易出错.添加`.*`只是表明你不明白模式是如何工作的; `.*`没有为此任务完成任何任务,但为引擎添加了额外的指令. (2认同)