消息:使用模式时出现内部错误“(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))/.*');
即使使用简单的正则表达式也会引发错误。
答案 0 :(得分:1)
您是否正确验证了您的正则表达式?在正则表达式工具中试一试,看看它是否会产生任何错误。一个不错的工具应该告诉你为什么你的正则表达式是无效的。
我见过的大多数正则表达式通常都带有某种特征,通常是'/'。你的事实不是可能与你得到的错误有关。
您还应该记住,尽管PHP的正则表达式与Perl类似,但存在一些差异。在这种情况下它们可能无关紧要,但你应该意识到它们。 http://www.php.net/manual/en/reference.pcre.pattern.differences.php
答案 1 :(得分: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))/.*/'
));
答案 2 :(得分:0)
在http:
中转义斜杠->addValidator('regex', false, '(http:\/\/)?(www\.)?(youtu)((be\.com)|(\.be))\/.*');