问题
我想使用一个正则表达式(如果可能的话)来要求一个字符串符合 [A-Za-z0-9_]
,但不允许出现以下情况:
- 只包含数字或符号的字符串。
- 以符号开头或结尾的字符串
- 相邻的多个符号
有效的
test_0123
t0e1s2t3
0123_test
te0_s1t23
t_t
无效的
t__t
____
01230123
_0123
_test
_test123
test_
test123_
规则原因
这是为了过滤我正在开发的网站的用户名。我根据特定的原因制定了这些规则。
只有数字和/或符号的用户名可能会导致路由和数据库查找方面的问题。路由
/users/#{id}
允许id
既可以是用户的ID,也可以是用户的名称。因此,名称和ID不应该发生冲突。_test
看起来很奇怪,我不认为它是有效的子域名,例如_test.example.com
我不喜欢
t__t
作为子域名的样子,例如t__t.example.com