我想使用这个正则表达式/^[a-zA-Z0-9 ]*$/

但有一个条件:

  • 该单词必须以字母开头,而不能以数字开头
  • 不允许使用特殊字符

我试过用另一种方法/[a-z]*$/i,但似乎行不通.任何帮助都会很有帮助.

推荐答案

您还可以使用负向先行来断言字符串开头的不是数字或空格.

使用不区分大小写的匹配:

re = /\A(?:[a-zA-Z][a-zA-Z0-9 ]*)?\z/i

Explanation

  • \A字符串开头
  • (?![\d ])负向前视,不直接在右侧断言空格或数字
  • [a-z\d ]*(可选)重复匹配任何列出的
  • \z字符串尾

请看regex rubular demo.

Ruby-on-rails相关问答推荐

ActiveRecord::声明在类别中无效#new

Rails:比枚举更惯用的排序/可比较列表方法?

CanCanCan、Pagy 和 Meil​​iSearch,如何组合这 3 个 gem?

ActiveRecord 包括.指定包含的列

如何在 IRB/Rails 控制台中 suppress 返回值的输出?

PostgreSQL 无间隙序列

使用 Rspec 测试 Rails 3.1 可安装引擎

使用 RSpec 和 Capybara (Rails) 测试重定向

上传图片 Ruby on Rails

Rails 中页面视图的简单计数器

如何在生产中部署 resque worker?

rails 模型 has_many 本身

Rails 3 中的猴子补丁

Rails Active Admin css 与 Twitter Bootstrap css 冲突

Redis 引发需要 NOAUTH 身份验证错误,但没有设置密码

在本地 Rails 开发环境中获取真实 IP 地址

Ruby on Rails:如何从显示的子资源中获取错误消息?

Rails:每个环境的初始化程序?

默认情况下 haml

Sidekiq Rails 4.2 使用 Active Job 还是 Worker?有什么不同