3

消息:使用模式“(http://)?(www.)?(youtu)((be.com)|(.be))/.*”时出现内部错误

$element = new Zend_Form_Element_Text($this->name);
$element->setRequired(true)
        ->setLabel(FileTypes::$names[$this->fileType])
        ->setDescription('Paste YouTube link here')
        ->setDecorators(FormDecorators::$simpleElementDecorators)
        ->addValidator('regex', false, '(http://)?(www\.)?(youtu)((be\.com)|(\.be))/.*');

即使使用简单的正则表达式也会引发错误。

4

3 回答 3

1

你验证你的正则表达式是正确的吗?在正则表达式工具中尝试一下,看看它是否会产生任何错误。一个体面的工具应该告诉你为什么你的正则表达式是错误的,如果它是无效的。

我见过的大多数正则表达式通常都以某种字符结尾,通常是“/”。您的错误可能与您遇到的错误有关。

您还应该记住,虽然 PHP 的正则表达式与 Perl 相似,但也有一些不同之处。在这种情况下,它们可能无关紧要,但您仍然应该注意它们。 http://www.php.net/manual/en/reference.pcre.pattern.differences.php

于 2012-07-13T07:33:19.597 回答
0

试试这个,你需要把你的模式放在一个数组中并包含分隔符。

$element = new Zend_Form_Element_Text($this->name);
                $element->setRequired(true)
                        ->setLabel(FileTypes::$names[$this->fileType])
                        ->setDescription('Paste YouTube link here')
                        ->setDecorators(FormDecorators::$simpleElementDecorators)
                        ->addValidator('regex', false, array(
                           'pattern' => '/(http://)?(www\.)?(youtu)((be\.com)|(\.be))/.*/'                                                                    
                         ));
于 2012-07-13T08:01:50.507 回答
0

转义 http 中的斜杠:

->addValidator('regex', false, '(http:\/\/)?(www\.)?(youtu)((be\.com)|(\.be))\/.*');
于 2015-02-12T20:14:36.543 回答