2012-02-29 56 views
0

多种模式我有这个有点用symfony实现代码:sfValidatorRegex在symfony的

$p1 = '/^[0-9]{8}[A-Z]$/i'; 
$p2 = '/^[XYZ][0-9]{7}[A-Z]$/i'; 

$this->setValidators(array(
... 
'field_1' => new sfValidatorRegex(
      array('pattern' => p1.'|'.p2)), 

...

的field_1必须要么图案P1或P2匹配,但它不工作。 请任何帮助。

回答

2

您连接分隔符和标志,这是行不通的。

尝试:

$p1 = '(?i:^[0-9]{8}[A-Z]$)'; 
$p2 = '(?i:^[XYZ][0-9]{7}[A-Z]$)'; 

$this->setValidators(array(
... 
'field_1' => new sfValidatorRegex(
      array('pattern' => "/$p1|$p2/")), 

另外,在你的情况,你可以只使用一种模式,如:

$re = '/^[XYZ0-9][0-9]{7}[A-Z]$/i'; 
+2

或者组合使用2个独立的'sfValidatorRegex'用'sfValidatorOr' – prodigitalson 2012-02-29 15:59:42

+0

它的工作原理。非常感谢。我不想使用两个sfValidatorRegex与sfValidatorOr结合使用,因为如果发生错误,它会抛出两条无效消息。 – Academia 2012-02-29 16:06:29