Php 正则表达式-求反字符串+;或

Php 正则表达式-求反字符串+;或,php,regex,preg-match,Php,Regex,Preg Match,我需要匹配不是11111或22222的字符串(精确) 这个怎么样: ^(|.|..|...|....|(?!11111|22222).....|......+)$ 基本思想是:所有长度为0-4和6+的字符串都可以。长度为5的字符串不得为11111或22222 编辑:并将长度压缩一点(但使其可读性降低): 那么: ^(?!11111$|22222$).* 测试:@JaredFarrish工作。你能把你的答案贴出来吗?这样我就可以把它标为正确答案了。我还发现这个模式也很有效:^(?。*(383

我需要匹配不是1111122222的字符串(精确)

这个怎么样:

^(|.|..|...|....|(?!11111|22222).....|......+)$
基本思想是:所有长度为0-4和6+的字符串都可以。长度为5的字符串不得为11111或22222

编辑:并将长度压缩一点(但使其可读性降低):

那么:

 ^(?!11111$|22222$).*

测试:

@JaredFarrish工作。你能把你的答案贴出来吗?这样我就可以把它标为正确答案了。我还发现这个模式也很有效:
^(?。*(3836079 | 22222)).$
为什么还要使用正则表达式?只需使用字符串比较检查两个字符串中的一个…我不知道这对您是否重要,但我的和您的正则表达式都将匹配以其中一个匹配项开头的任何字符串。见:和:-我刚刚测试过,是的,这很重要。所以你纠正了我的模式,而你的模式并不完全符合我的需要,必须是11111或22222。谢谢你指出这一点,真聪明!而且比我建议的答案短得多。如果写为
^(?!11111$)(?!22222$).
:任何字符,前面没有11111或22222。完美的答案非常感谢!
^(.{0,4}|(?!11111|22222).{5}|.{6}.*)$
 ^(?!11111$|22222$).*