下列用户应该被允许:Ruby的正则表达式不工作
Foo-Bar
Foobar
Fooo_123
Foob123_1
Foo-bar-123
以下用户名不应该被允许:
_Foobar_
F-o-o-b-a-r
-Foobar-
_-Foobar-_
这意味着:该字符串被允许为3至20个字符。每三个字符只允许有一个短划线或下划线。不是在开始而是在结束。您只能使用最多2个短划线或下划线,最多3个数字,但最少3个字母。
这是我的正则表达式到目前为止已经完成,但我已经在前端和末端未能在允许破折号:
/^[^\-_][a-zA-Z0-9]{3,20}[^\-_]$/
提前感谢!
1。试图制作一个厨房水槽模式是一个缓慢下降到疯狂。我更喜欢看到几个小的,易于消化的模式,特别是当我要看别人的代码时。 –
由于您使用否定字符类'[^ -_]',该模式允许使用任何特殊字符('#!^ $ *%...')。为确保只有破折号,下划线,字母和数字,您必须将其更改为“[a-zA-Z0-9]”或“[^ \ W_]”。另一件事,为什么不使用'valid = str.length.between?(3,20)'(未测试)? –
@CasimiretHippolyte它说什么不允许特殊字符?我想我可以用'between?';我会编辑帖子 – Doorknob