Ruby 用户名正则表达式

Ruby 用户名正则表达式,ruby,regex,Ruby,Regex,我需要用户名是两个或两个以上的字符,分别为a-z,0-9,全部为小写。这是我正在使用的当前正则表达式 USER_REGEX = /\A[a-z0-9][-a-z0-9]{1,19}\z/i 有了这个正则表达式,用户可以在用户名中使用大写字符。如何修改当前正则表达式以避免出现这种情况?如果必须保留正则表达式,请从末尾删除“I” USER_REGEX = /\A[a-z0-9][-a-z0-9]{1,19}\z/i USER_REGEX = /\A[a-z0-9][-a-z0-9]{1,19}\z

我需要用户名是两个或两个以上的字符,分别为
a-z
0-9
,全部为小写。这是我正在使用的当前正则表达式

USER_REGEX = /\A[a-z0-9][-a-z0-9]{1,19}\z/i

有了这个正则表达式,用户可以在用户名中使用大写字符。如何修改当前正则表达式以避免出现这种情况?

如果必须保留正则表达式,请从末尾删除“I”

USER_REGEX = /\A[a-z0-9][-a-z0-9]{1,19}\z/i
USER_REGEX = /\A[a-z0-9][-a-z0-9]{1,19}\z/
“i”告诉正则表达式是不区分大小写的正则表达式


但是您希望它区分大小写,并且只匹配小写字母。

要过滤两到二十个小写字符或数字的正则表达式是

  /^[a-z0-9]{2,20}$/
这意味着:

  • ^
    在输入的前面
  • a-z
    接受小写字母“a”到“z”
  • 0-9
    通过“9”接受“0”
  • {2,20}
    从前面的
    []
    块接受2到20个元素
  • $
    直到输入结束

  • 您可以使用尾随的
    i
    使正则表达式不区分大小写,如您的示例所示;这似乎是问题的根源。也就是说,我不知道Ruby在正则表达式方面的特性。

    为什么不直接使用用户输入的用户名,并在保存之前对其进行简化?我该怎么做?我是在下一行写USER_REGEX.downcase还是写before_save方法?否-REGEX不是用户名。此外,我会在验证之前进行验证,这样在您对其进行分析之后,您仍然可以获得验证。在before_验证中,您可以执行:“self.username=username.downcase”