使用正则表达式验证昵称

时间:2014-04-03 11:34:13

标签: javascript regex

我需要验证没有@#的昵称,并且它不能以数字开头这是我的解决方案,但是@和{{1} }

#

。测试:

(^[^0-9])([\w a-z A-Z 0-9][^@#])

3 个答案:

答案 0 :(得分:4)

你的正则表达式:

^(^[^0-9])([\w a-z A-Z 0-9][^@#])$

解释

  1. 不要以number.start开头,而不是数字。

  2. 两个字母的大写/小写字母或数字或下划线,后跟任意^@#

  3. 根据你的正则表达式,任何三个字母的单词都会匹配。

    使用它:

    ^[^0-9]\w+$
    

    这适用于不包含任何特殊字符的用户名。

    如果你特别不想要@和#。用这个:

    ^[^0-9][^@#]+$
    

    演示:https://regex101.com/r/gV9eO0/1

答案 1 :(得分:4)

  

我需要验证没有@#的昵称,并且不能以数字开头

使用(!?pattern)是一个负向前瞻,因此您可以阻止\d作为第一个字符而不会阻止表达式的其余部分查看它,然后

如果你只是黑名单那么

^(?!\d)[^@#]+$

reg1

否则,请使用白名单

^(?!\d)[a-zA-z\d ]+$

reg2

注意我们如何与字符串$的结尾保持匹配 我使用过+,因为你可能不想允许零长度的昵称。

此外,您可以使用组中的*+运算符排序您尝试的路线;

^(?!\d)(?:(?![@#])[a-zA-Z\d ])+$

reg3

通过debuggex.com

的图形表示

答案 2 :(得分:1)

您可以使用类似

的内容
^[a-zA-Z]\w*$
  • \w[a-zA-Z0-9_]的快捷方式,即alphanum类。
  • [a-zA-Z]确保您的第一个字符不是数字(因此您的昵称不能为空)
  • ^$是匹配字符串开头和结尾的锚点,确保字符串只包含想要的字符