用于用户名验证的正则表达式修改

时间:2014-02-12 09:39:00

标签: c regex linux

我正在使用^[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

但我想阻止用_,数字和所有数字盯着用户名。

3 个答案:

答案 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}$
相关问题