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

标签 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

但我想阻止用户名以_、数字和所有数字开头。

最佳答案

如果您禁止以数字开头的用户名,那么您也禁止仅由一串数字组成的用户名。没有必要处理第二个条件,因为第一个条件阻止了这种情况的发生。因此,只需使用排除数字(和下划线等)的字符类即可

^[a-zA-Z][a-zA-Z0-9_-]{5,13}$

在此模式中,我还锚定到字符串的末尾,因为您的原始正则表达式不需要匹配整个字符串。通过锚定到字符串的开头和结尾,您强制只有那些您允许的字符可以出现在任何位置。两端的 anchor 还可以防止匹配超过 14 个字符的字符串。

关于c - 用于用户名验证的正则表达式修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21723954/

相关文章:

javascript - 如何使用 RegExp 在 javascript 中拆分字符串?

python - 匹配除模式以外的所有内容并替换为字符串

mysql - 创建表语句中函数的正则表达式

linux - sed -i 帮助(bash)

linux - 在 Tomcat 8 中将 HTTPS 设置为默认值

c - 为什么我的C工程编译找不到我的结构?

c - 使用 & 1<<0 测试值?

c - 在 Assembly x86 中遍历二维数组

c - 从函数中的 1 点返回

linux - 使用 dkms 修补现有内核模块