【问题标题】:Regex to validate string having only characters (not special characters), blank spaces and numbers正则表达式验证只有字符(不是特殊字符)、空格和数字的字符串
【发布时间】:2011-10-09 13:13:30
【问题描述】:

我正在使用 Ruby on Rails 3.0.9,我想验证一个只能包含字符(不是特殊字符 - 不区分大小写)、空格和数字的字符串。

在我的验证码中:

validates :name,
  :presence   => true,
  :format     => { :with => regex } # Here I should set the 'regex'

我应该如何陈述正则表达式?

【问题讨论】:

    标签: ruby-on-rails ruby regex ruby-on-rails-3 validation


    【解决方案1】:

    您正在寻找:

    [a-zA-Z0-9\s]+

    + 表示一个或多个,因此它不会匹配空字符串。如果您还需要匹配它们,请使用* 代替+

    【讨论】:

    • @eugen - 这将允许_
    【解决方案2】:

    有几种方法可以做到这一点。如果您只想允许 ASCII 单词字符(没有重音字符,如 Ê 或来自其他字母的字母,如 Ӕ 或 ל),请使用:

    /^[a-zA-Z\d\s]*$/
    

    如果您只想在 Ruby 1.8.7 中允许使用其他语言的数字和字母,请使用以下命令:

    /^(?:[^\W_]|\s)*$/u
    

    如果您只想在 Ruby 1.9.x 中允许使用其他语言的数字和字母,请使用:

    ^[\p{Word}\w\s-]*$
    

    另外,如果您计划在 Ruby on Rails 中使用支持 unicode 的 1.9.x 正则表达式,请在 .rb 文件的开头添加以下行:

    # coding: utf-8
    

    【讨论】:

    • @ream88 - 谢谢;编辑删除\p{L} 版本。我不检查这么短的正则表达式是很草率的。 \p{L} 不起作用——为什么? Ruby 正则表达式不支持它吗?它在 .NET 中运行良好。
    • @Justin Morgan - 验证字符串中的重音字符(如 à、è、é、ò、...)怎么样?
    • @Backo - 如果你使用the u flag,它应该匹配那些。 Tested here.
    • @Volte - 你愿意详细说明吗?
    • @Volte - 这与这个问题并不相关。我们对他想要做什么一无所知。
    【解决方案3】:

    除了已经说过的内容之外,例如,将任何正则表达式分配给您控件中的正则表达式变量

    regex = ^[a-zA-Z\d\s]*$
    

    【讨论】:

      猜你喜欢
      • 2011-10-10
      • 2015-10-01
      • 2023-02-14
      • 1970-01-01
      • 2014-01-07
      • 2011-10-16
      • 2022-11-16
      • 2011-12-10
      • 2014-08-26
      相关资源
      最近更新 更多