3

我有代码

$this->addValidator('Regex', false, 
                     array('/^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$/'));

用于验证数据是否为字母数字但它不起作用,

怎么做?

4

2 回答 2

7

为此,我正在使用标准的 Alnum 验证器。

在这样的表单定义中:

$this->addElement('text', 'username', array(
  'label' => 'Uživatelské jméno',
  'required' => true,
  'validators' => array(
      array('Alnum'),
      array('StringLength', false, array(2, 50))
  )
));

在您的符号中,类似以下内容应该可以解决问题:

$this->addValidator('Alnum');

在Zend Framework 页面上查看可能的参数/其他标准验证器

于 2012-10-29T13:15:43.977 回答
1

您的正则表达式工作正常,验证器也是如此。只需验证您已在正确的位置使用它:

一个例子:

    $login = new Zend_Form_Element_Text('uesrlogin');
    $login->setLabel('Enter username :')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addValidator('Regex', false, array('/^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$/'));

正如@Kamil 指出的那样,使用 Zend_Validate_Alnum 验证器将是检查字母数字的最佳选择。它甚至为您的项目添加了多语言支持。

当使用 Zend_Validate_Alnum 时,用户在其浏览器中设置的语言将用于设置允许的字符。这意味着当您的用户将 de 设置为德语时,他还可以输入诸如 ä、ö 和 ü 之类的字符以及来自英文字母表的字符。

于 2012-10-29T16:47:33.260 回答