我正在使用 ^[a-zA-Z0-9_-]{6,14}
正则表达式来验证用户名,但我想阻止以数字或所有数字开头的用户名,那么怎么修改在这个正则表达式中是必需的吗??
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}$
在此模式中,我还锚定到字符串的末尾,因为您的原始正则表达式不需要匹配整个字符串。通过锚定到字符串的开头和结尾,您强制只有那些您允许的字符可以出现在任何位置。两端的 anchor 还可以防止匹配超过 14 个字符的字符串。
关于c - 用于用户名验证的正则表达式修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21723954/