2

我想用正则表达式检查登录。

  1. 登录名必须至少包含 3-16 个字符({3,16})
  2. 登录名只能包含字母数字,-并且_ ([a-zA-Z0-9_-])
  3. 登录不能包含__, --, -_, _- ((?!--|__|-_|_-))
  4. 登录不能包含-_结尾。((?!-|_))

如何将所有表达式组合成一个?

编辑:
5.登录不能-或开头_

4

2 回答 2

2

^(?!_|-)([a-zA-Z0-9]|[\-_](?!_|-|$)){3,16}$

火柴

- 字符串的开头

- 检查第一个字符不是_-

- 一个标记,它是(一个字母数字)或(一个连字符/下划线,后面没有连字符/下划线/行尾)

-上述令牌,3到16次

- 字符串的结尾

于 2013-05-24T13:09:19.643 回答
0

您可以使用肯定断言:

  • 登录必须至少包含 3-16 个字符 ({3,16})

    (?=.{3,16}$)
    
  • 登录名只能包含字母数字、- 和 _ ([a-zA-Z0-9_-])

    (?=[a-zA-Z0-9_-]*$)
    
  • 登录名不能包含, --, -_, - ((?!--| |- |_-))

    (?!.*(?:__|--|-_|_-))
    
  • 登录不能包含也不能以 - 或 _ 开头

    (?![_-]|.*[_−]$)
    

结果:

^(?![_-]|.*(?:__|--|-_|_-)|.*[_-]$)[a-zA-Z0-9_-]{3,16}$
于 2013-05-24T13:42:50.733 回答