我想根据此架构验证用户名:
这个正则表达式满足上面的1和2,但我无法弄清楚如何满足3:
/^[a-zA-Z\d][\w\-]+$/
(我正在使用Ruby,如果那是相关的)
答案 0 :(得分:11)
效率不高,但很简单:
/^(?!\d+$)[a-zA-Z\d][\w\-]+$/
前瞻只是意味着:“接下来的内容不是直到结尾的一串数字。”
答案 1 :(得分:1)
不理想,但很简单:使用正则表达式/^.*[a-zA-Z_\-].*$/
确保它通过两者并且你会没事的。
答案 2 :(得分:1)
如果你可以进行两次传球,那么更简单,更快的第二次传球正则表达式为:
/[^\d]/
这只匹配任何不是数字的东西,它只需要匹配一个并且它会提前终止。你真的不需要在这里严格,因为第一遍已经拒绝了不允许的字符。
答案 3 :(得分:0)
我会使用验证所需的正则表达式,然后使用:
passwd.to_i.to_s.length != passwd.length
验证passwd
在通过主要验证后不是数字字符串。
答案 4 :(得分:0)
另一种方式,虽然它可能不如Max的表现好:
/^[a-z0-9][-\w]*[-_a-z][-\w]*$/i