我正在使用^[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
但我想阻止用_,数字和所有数字盯着用户名。
答案 0 :(得分:5)
如果禁止以数字开头的用户名,则还禁止仅包含一串数字的用户名。由于第一个条件阻止了这种情况的发生,因此无需处理第二个条件。因此,只需使用排除数字(和下划线等)的字符类
^[a-zA-Z][a-zA-Z0-9_-]{5,13}$
在这种模式中,我也锚定到字符串的末尾,因为你的原始正则表达式并不需要匹配整个字符串。通过锚定到字符串的开头和结尾,您将强制只允许您允许的那些字符出现在任何位置。两端的锚点也可以防止超过14个字符的字符串匹配。
答案 1 :(得分:0)
您可以使用此正则表达式
编辑:现在试试这个
(?![0-9_])^[a-zA-Z0-9-_]{6,14}$
答案 2 :(得分:0)
这应该是合适的:
^[a-zA-Z-][a-zA-Z0-9_-]{4,13}$