2011-03-15 90 views
1

我試圖使用正則表達式驗證一個Zend表單元素上像這個 -Zend的驗證正則表達式

$textarea = $this->createElement('text','scores'); 

    $textarea->setLabel('Enter a comma separated list of numbers'); 

    $textarea->setDecorators(
      array('ViewHelper', 
       array('HtmlTag', 
        array('tag' => 'div', 
          'class'=>'scores' 
        ) 
       ) 
      ) 
    ); 
    $textarea->addDecorator('Label') 
     ->setRequired(true) 
     ->addFilter(new Zend_Filter_StringTrim()) 
     ->addValidator('regex',true,array('^\d{1,3}([,]\d{1,3})*$')) 
     ->addErrorMessage('Please enter a comma separated list of numbers'); 

我只是想驗證文本區域包含分開的數字逗號的列表。

目前即時得到「使用模式時出現內部錯誤」^ \ d {1,3}([,] \ d {1,3})* $'「。

我猜這個正則表達式有問題嗎?

任何幫助,將不勝感激:)

感謝, 皮特

回答

0

嘗試逃避反斜槓:

'^\\d{1,3}(,\\d{1,3})*$' 

你不需要周圍的逗號括號。

此外,您可能希望允許的數量和分離器之間的空白:

'^\\s*\\d{1,3}(\\s*,\\s*\\d{1,3})*\\s*$' 
0

您需要添加符號開始和結束的正則表達式。例如:

->addValidator('regex',true,array('#^\\d{1,3}([,]\\d{1,3})*$#')) 
0

確實需要分隔符。但不要逃避你的斜槓:)

0

恕我直言,你是缺少斜槓「/」在你的正則表達式的結尾。我不是專家,但是這對我很有用: ->addValidator(new Zend_Validate_Regex('/^[a-zA-Z0-9][a-zA-Z0-9 ._-]{1,31}/'));