我需要验证没有@
和#
的昵称,并且它不能以数字开头这是我的解决方案,但是@
和{{1} }
#
。测试:
(^[^0-9])([\w a-z A-Z 0-9][^@#])
答案 0 :(得分:4)
你的正则表达式:
^(^[^0-9])([\w a-z A-Z 0-9][^@#])$
解释
不要以number.start开头,而不是数字。
两个字母的大写/小写字母或数字或下划线,后跟任意^@#
根据你的正则表达式,任何三个字母的单词都会匹配。
使用它:
^[^0-9]\w+$
这适用于不包含任何特殊字符的用户名。
如果你特别不想要@和#。用这个:
^[^0-9][^@#]+$
答案 1 :(得分:4)
我需要验证没有
@
和#
的昵称,并且不能以数字开头
使用(!?pattern)
是一个负向前瞻,因此您可以阻止\d
作为第一个字符而不会阻止表达式的其余部分查看它,然后
如果你只是黑名单那么
^(?!\d)[^@#]+$
否则,请使用白名单
^(?!\d)[a-zA-z\d ]+$
注意我们如何与字符串$
的结尾保持匹配
我使用过+
,因为你可能不想允许零长度的昵称。
此外,您可以使用组中的*
或+
运算符排序您尝试的路线;
^(?!\d)(?:(?![@#])[a-zA-Z\d ])+$
答案 2 :(得分:1)
您可以使用类似
的内容^[a-zA-Z]\w*$
\w
是[a-zA-Z0-9_]
的快捷方式,即alphanum类。[a-zA-Z]
确保您的第一个字符不是数字(因此您的昵称不能为空)^$
是匹配字符串开头和结尾的锚点,确保字符串只包含想要的字符