Php Symfony约束:用于解析的正则表达式

Php Symfony约束:用于解析的正则表达式,php,regex,symfony,Php,Regex,Symfony,我正在尝试验证一个参数结构,该结构应与以下值匹配:1200x800、1200x、x800或干脆x 因此,我使用以下约束: 'size' => [ new Assert\NotBlank(), new Assert\Regex([ 'pattern' => '/(\d+)?x(\d+)?/i' ]) ], 作为一个独立的组件,

我正在尝试验证一个参数结构,该结构应与以下值匹配:
1200x800
1200x
x800
或干脆
x
因此,我使用以下约束:

'size' => [
                new Assert\NotBlank(),
                new Assert\Regex([
                    'pattern' => '/(\d+)?x(\d+)?/i'
                ])
            ],
作为一个独立的组件,它可以正常工作,但在symfony约束内,它也匹配类似于
1200x800x500
的情况。 我猜在幕后它使用了preg_match_?这可以解释为什么使用:
preg_match_all('/(\d+)?x(\d+)?/i',$data['size'],$size),给出以下结果:

array:3 [▼
  0 => array:2 [▼
    0 => "1500x800"
    1 => "x500"
  ]
  1 => array:2 [▼
    0 => "1500"
    1 => ""
  ]
  2 => array:2 [▼
    0 => "800"
    1 => "500"
  ]
]

有没有办法让它在第一次发生时就停止?基本上只允许:
1200x800
1200x
x800
或简单地
x
您可以设置
^
字符串的开头和
$
字符串的结尾在正则表达式中锚定

/^(\d+)?x(\d+)$/i

您可以使用单词边界
\b(\d+)?x(\d+)?\b
请参见“尼斯”,它已修复。我认为这是一个symfony的东西,因为它在regex小提琴中的效果与预期一样。