我有代码
$this->addValidator('Regex', false,
array('/^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$/'));
用于验证数据是否为字母数字但不起作用,
怎么做?
答案 0 :(得分:6)
我正在使用标准的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');
上查看可能的参数/其他标准验证器
答案 1 :(得分: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时,他也可以输入 像ä,ö和ü这样的人物角色除了 英文字母。