Regex 当定义的字符串不是';不在场

Regex 当定义的字符串不是';不在场,regex,Regex,我正在拼命寻找一个正则表达式,它可以匹配a到z、a到z、0到9和“-”之间的任何内容。如果要检查的字符串等于“admin”,则同一正则表达式不得匹配 我试过这个: /^(?!admin)|([-a-z0-9]{1,})$/i 但是它不起作用,它匹配字符串admin,即使我添加了消极的前瞻性内容 我将这个正则表达式与PHP(PCRE)一起使用。正则表达式是您唯一可用的工具吗?这样做可能更容易(Perl语法): 正则表达式是您唯一可用的工具吗?这样做可能更容易(Perl语法): 我认为如果您删除了“

我正在拼命寻找一个正则表达式,它可以匹配a到z、a到z、0到9和“-”之间的任何内容。如果要检查的字符串等于“admin”,则同一正则表达式不得匹配

我试过这个:

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

但是它不起作用,它匹配字符串admin,即使我添加了消极的前瞻性内容


我将这个正则表达式与PHP(PCRE)一起使用。

正则表达式是您唯一可用的工具吗?这样做可能更容易(Perl语法):


正则表达式是您唯一可用的工具吗?这样做可能更容易(Perl语法):


我认为如果您删除了“or”(
|
)操作符,它会起作用。现在你基本上是说,如果它是字母等等,那么匹配,或者不等于admin,所以它总是返回true,因为当它等于admin时,它仍然匹配另一个表达式。

我认为如果你删除“OR”(
|
)操作符,它会起作用。现在你基本上是说,如果它是字母等等,那么匹配,或者不等于admin,所以它总是返回true,因为当它等于admin时,它仍然匹配另一个表达式。

在单个正则表达式中执行“A而不是B”是很棘手的。通常最好(更清晰、更容易)分两部分来做。如果这不是一个选项,它可以做到。你走在正确的轨道上,消极的展望未来,但这种交替正在扼杀你

/^(?!admin$)[-a-zA-Z0-9]+$/
在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
在单个正则表达式中执行“A而不是B”是很棘手的。通常最好(更清晰、更容易)分两部分来做。如果这不是一个选项,它可以做到。你走在正确的轨道上,消极的展望未来,但这种交替正在扼杀你

/^(?!admin$)[-a-zA-Z0-9]+$/
在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
^(?![\.]*[aA][dD][mM][iI][nN][\.]*$)([A-Za-z0-9]{1,}$)

尝试在code.google.com

^(?![\.]*[aA][dD][mM][iI][nN][\.]*$)([a-Za-z0-9]{1,}$)上使用regex测试工具,如regex-freetool

尝试使用regex测试工具,比如code.google.com上的regex-freetool