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

username regex in rails 4

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

你可以使用这个正则表达式:

^(\w|\.)+$

与以下相同:

^[a-zA-Z0-9_\.]+$

Here's preview of the regex in action 在 regex101.com 上,这是它的细分

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

如果你想禁止在用户名的开头和结尾使用 ._,你可以使用:

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

确保使用 :multiline => true 选项,以避免错误。

: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 %>