2013-08-17 61 views
0

我想禁止人們在我的輸入中編寫字符「#」,我該如何實現它?如何禁止使用ZF2表格驗證器的字符

+2

如何正則表達式驗證有類似'[^#]'(http://framework.zend.com/manual/2.2/en/modules/zend.validator.set.html#regex)的模式?你有什麼嘗試?也許你可以過濾輸入字段而不是驗證它?一些更多的信息將是有用的。 – guessimtoolate

+0

正則表達式是個好主意,但是當我使用這種模式時:[^#]表單永遠不會有效,有或沒有#。 – Siol

+0

在這裏回答http://stackoverflow.com/questions/5704061/php-reverse-preg-match這種模式工作:/^(?:(?!#).)*$/i – Siol

回答

1

正如@guessimtoolate建議的那樣,因爲如果你想禁止只有尖銳的字符,那麼最好簡單地過濾它。過濾器驗證之前運行,因此您的工作流程是這樣的:

  • 獲取字段值
  • 刪除字符#
  • 出現的所有使用連接驗證

過濾器驗證你的領域你想使用的是Zend\Filter\PregReplace。如果你提供你的過濾器/通過提供商接口校驗,那麼陣列的符號應爲以下(這是未經測試,所以你可以解決它一點點)

'filters' => array(
    array('name' => 'Zend\Filter\PregReplace', 'options' => array(
     'pattern'  => '/#/', 
     'replacement' => '' 
    ) 
)