我需要验证一个没有@和#的昵称,它不能从数字开始
thi是我的解决方案,但@和#
(^[^0-9])([\w a-z A-Z 0-9][^@#]).test:
andrea //true
0andrea // false
// these are true but I need them to be false
and@rea // true
and#rea // true发布于 2014-04-03 11:42:28
你的审判官:
^(^[^0-9])([\w a-z A-Z 0-9][^@#])$解释
^@#所以根据你的判断,任何三个字母的单词都是匹配的。
用这个:
^[^0-9]\w+$这将适用于用户名,而不是任何特殊的字符。
如果你只是特别不想要@和#。用这个:
^[^0-9][^@#]+$发布于 2014-04-03 11:44:29
我需要验证一个没有
@和#的昵称,它不能从数字开始
使用(!?pattern)是一种负面的前瞻性,因此您可以防止\d作为第一个字符,而不阻止表达式的其余部分查看它。
如果你只是在黑名单上
^(?!\d)[^@#]+$

否则,请使用白名单。
^(?!\d)[a-zA-z\d ]+$

注意我们如何保持与字符串末尾的匹配,$。
我之所以使用+,是因为您可能不希望允许零长度昵称。
此外,您还可以通过在一个组上使用*或+运算符来排序-沿着您正在尝试的路线;
^(?!\d)(?:(?![@#])[a-zA-Z\d ])+$

基于debuggex.com的图形表示
发布于 2014-04-03 11:43:03
你可以用这样的方法
^[a-zA-Z]\w*$\w是用于[a-zA-Z0-9_]类的快捷方式。[a-zA-Z]确保您的第一个字符不是数字(因此您的昵称不能为空)^$是匹配字符串开头和结尾的锚点,确保字符串只包含所需字符。https://stackoverflow.com/questions/22836365
复制相似问题