rails 4中的用户名正则表达式

时间:2015-02-07 06:07:45

标签: regex ruby-on-rails-4 devise username

我有一个带用户名属性的用户模型,一切正常,但如何在用户名上制作正则表达式,所以它只接受字母数字和_。 提前谢谢

2 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式:

^(\w|\.)+$

与以下内容相同:

^[a-zA-Z0-9_\.]+$
在regex101.com上

Here's preview of the regex in action,这里有一个细分

  • ^匹配字符串的开头
  • (只对字符进行分组,以便可以应用修饰符
  • \w匹配任何 a-z A-Z 0-9 _ 。使其与[a-zA-Z0-9_]相同。
  • |是OR字符,因此可以找到它后面或前面的匹配。
  • \.字面上匹配 .
  • )结束字符组
  • +使前一个字符组匹配一次或多次
  • $匹配字符串的结尾

如果您想在用户名的开头和结尾取消._,可以使用:

^[a-zA-Z0-9](\w|\.)*[a-zA-Z0-9]$

请务必使用:multiline => true选项,以避免错误。

答案 1 :(得分:-1)

:multiline => true must be added on the username form text_field as this:

validates :username, presence: true, length: {minimum: 3, maximum: 20 },
                                    format: { with: /\A[a-zA-Z0-9]+\z/, message: 'cannot have special characters'  },
                                    uniqueness: { case_sensitive: false }

on form: <%= f.text_field :name, class: "form-control", placeholder: " Please Enter Full Name ", autofocus: true, :multiline => true %>