我需要用户名为a-z
,0-9
的两个或多个字符,全部为小写。这是我正在使用的当前正则表达式
USER_REGEX = /\A[a-z0-9][-a-z0-9]{1,19}\z/i
使用此正则表达式,用户可以在其用户名中使用大写章程。如何修改当前正则表达式以避免这种情况?
答案 0 :(得分:4)
用于过滤2到20个小写字符或数字的正则表达式是
/^[a-z0-9]{2,20}$/
表示:
^
a-z
接受小写'a'到'z'0-9
接受'0'到'9'{2,20}
接受前面[]
块$
直到输入结束您可以使用尾随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。
但你希望它区分大小写,只匹配小写字母。