0

I would like to disallow people to writing character "#" on my input how can I achieve it ?

Siol
  • 311
  • 8
  • 21
  • 2
    How about RegEx validator class with a pattern like `[^#]` (http://framework.zend.com/manual/2.2/en/modules/zend.validator.set.html#regex)? What have you tried? Maybe you could just filter that input field instead of validating it? Some more info would be useful. – guessimtoolate Aug 17 '13 at 20:05
  • Regex is good idea but when i'm using this pattern : [^#] the form is never valid, with or without #. – Siol Aug 18 '13 at 10:47
  • Answer here http://stackoverflow.com/questions/5704061/php-reverse-preg-match this pattern working : /^(?:(?!#).)*$/i – Siol Aug 18 '13 at 11:30

1 Answers1

1

As @guessimtoolate suggested, since if you want to disallow only the sharp-character, then it's best to simply filter it out. Filters are run before Validation, therefore your workflow is like this:

  • Get Field Value
  • Remove all occurences of the character #
  • Validate your field using your attached validators

The Filter you wanna be using is the Zend\Filter\PregReplace. In case you're providing your Filters/Validators via the provider-interface, then the array-notation should be the following (it's untested, so you may work around a little bit with it)

'filters' => array(
    array('name' => 'Zend\Filter\PregReplace', 'options' => array(
       'pattern'     => '/#/',
       'replacement' => ''
    )
)
Sam
  • 16,435
  • 6
  • 55
  • 89