我使用^[a-zA-Z0-9_-]{6,14}
regex作为验证用户名,但我想阻止用户名以数字或所有数字开头,所以在这个regex中需要做什么修改?是吗?
Content of temp.txt
user123
User123
USER
UsEr12345
123456
_12345
grep -w -E -o '^[a-zA-Z0-9_-]{5,14}' temp.txt
user123
User123
USER
UsEr12345
123456
_12345
但我想阻止用户名以数字和所有数字开头。
最佳答案
如果禁止以数字开头的用户名,则也禁止仅由一串数字组成的用户名。不需要处理第二个条件,因为第一个条件阻止了这种情况的发生。所以只要以排除数字(和下划线等)的字符类开头就行了。
^[a-zA-Z][a-zA-Z0-9_-]{5,13}$
在这个模式中,我还锚定到字符串的末尾,因为原来的regexp不需要匹配整个字符串。通过锚定到字符串的开头和结尾,您将强制要求只有您允许的字符可以出现在任何位置。两端的锚也可以防止超过14个字符的字符串被匹配。