用户名正则表达式

时间:2014-02-23 01:59:48

标签: ruby regex

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

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

使用此正则表达式,用户可以在其用户名中使用大写章程。如何修改当前正则表达式以避免这种情况?

2 个答案:

答案 0 :(得分:4)

用于过滤2到20个小写字符或数字的正则表达式是

  /^[a-z0-9]{2,20}$/

表示:

    输入前面的
  1. ^
  2. a-z接受小写'a'到'z'
  3. 0-9接受'0'到'9'
  4. {2,20}接受前面[]
  5. 中的2到20个元素
  6. $直到输入结束
  7. 您可以使用尾随i来使正则表达式不区分大小写,如您的示例所示;这似乎是问题的根源。也就是说,我不知道Ruby在正则表达式方面的特殊性。

答案 1 :(得分:3)

如果您必须保留RegEx - 从末尾删除“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”告诉RegEx是一个不区分大小写的RegEx。

但你希望它区分大小写,只匹配小写字母。