当定义的字符串不存在时,匹配的正则正则表达式是什么

Syl*_*ain 1 regex

我正在拼命寻找一个正则表达式,它匹配a到z,A到Z,0到9和" - "之间的任何东西.如果要检查的字符串等于"admin",则相同的正则表达式不能匹配.

我试过这个:

/^(?!admin)|([-a-z0-9]{1,})$/i

但它不起作用,它匹配字符串管理员,即使我添加了负面前瞻的东西.

我正在使用这个正则表达式与PHP(PCRE).

Mic*_*man 6

在单个正则表达式中执行"A而不是B"非常棘手.通常更好(更清晰,更容易)分两部分来做.如果这不是一个选项,那就可以完成.你处于正确的轨道上,负面的前瞻但是交替会让你失望.

/^(?!admin$)[-a-zA-Z0-9]+$/
Run Code Online (Sandbox Code Playgroud)

在Perl的扩展语法中,这是:

/
  ^               # beginning of line anchor
  (?!             # start negative lookahead assertion
     admin        #   the literal string 'admin'
     $            #   end of line anchor
  )               # end negative lookahead assertion
  [-a-zA-Z0-9]+   # one or more of a-z, A-Z, 0-9, or '-'
  $               # end of string anchor
/x
Run Code Online (Sandbox Code Playgroud)