我需要匹配不是 11111 或 22222 (完全)
的字符串<?php
$string = 'STRING'
$pattern = '#PATTER#' // what I have to find
echo preg_match($pattern, $string) ? 'match' : 'no match';
例:
$ string =&#39; 33333&#39 ;; //匹配
$ string =&#39; 222222&#39 ;; //匹配
$ string =&#39; 11111&#39 ;; //无匹配
$ string =&#39; 22222&#39 ;; //无匹配
我尝试了许多我google的模式,但都没有。
注意:必须是纯 REGEX 和 NOT 否定函数 preg_match
答案 0 :(得分:3)
答案 1 :(得分:0)
这个怎么样:
^(|.|..|...|....|(?!11111|22222).....|......+)$
基本思想是:所有长度为0-4和6+的字符串都很好。长度为5的字符串不得为11111或22222。
编辑:并稍微压缩一下(但让IMO的可读性降低):
^(.{0,4}|(?!11111|22222).{5}|.{6}.*)$