表达"至少一个非数字"的正则表达式

Tom*_*man 8 ruby regex

我想根据这个架构验证用户名:

  1. 允许的字符:字母,数字,连字符,下划线
  2. 第一个字符必须是字母或数字
  3. 用户名不能是所有数字

这个正则表达式满足上面的1和2,但我无法弄清楚如何满足3:

/^[a-zA-Z\d][\w\-]+$/
Run Code Online (Sandbox Code Playgroud)

(我正在使用Ruby,如果那是相关的)

Max*_*keh 11

效率不高,但很简单:

/^(?!\d+$)[a-zA-Z\d][\w\-]+$/

前瞻只是意味着:"接下来的内容不是一串数字直到最后".