regex - ZF2 表单验证无法正常用于电子邮件

标签 regex zend-framework2

我有一个 type="email"的输入框,并使用 zend validator 对其进行验证

<input type="email" name="email" > email </input>
'email' => array(
                'required' => true,
                'validators' => array(

                    array(
                        'name' => 'Regex',
                        'options' => array(
                            'pattern'=>'/^[a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/', 
                            'messages' => array(
                                \Zend\Validator\Regex::NOT_MATCH=>'Please fill correct email ',
                            )
                        ),
                        'break_chain_on_failure' => true
                    ),

                ),

问题是如果我使用另一个数组来检查

IS_EMPTY

zend regex 再次不显示上述错误,而是显示默认的 zend regex 错误,如果我删除 IS_EMPTY 那么它工作正常。正则表达式错误是

 1. input does not match to expression '/^[a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/'

完全无法理解为什么在没有空检查的情况下它可以正常工作并且不能与它一起工作

最佳答案

不需要使用notEmpty,只需将该字段设置为“必填”并指定错误消息即可:

    $this->add(array(
        'name' => 'email',
        'required' => true,
        'error_message' => 'Please entry e-mail.',
        'validators' => array(
            array(
                'name' => 'EmailAddress',
                'options' => array (
                    'messages' => array(EmailAddress::INVALID => 'Please specify a valid e-mail.'),
                ),
                'break_chain_on_failure' => true,
            ),
        ),
    ));

关于regex - ZF2 表单验证无法正常用于电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20813519/

相关文章:

c# - 正则表达式模式中的相同变量

php - 与 zf2 中列的静态值连接

doctrine-orm - 使用 Doctrine 2 的 UniqueEntity

regex - 正则表达式: match any word until first space

java - 正则表达式在字母小写字符之后拆分大写字母

regex - sed 从正则表达式到正则表达式的打印行

java - 正则表达式:获取所有单词,直到找到多个特殊字符

javascript - Json休息API : Best solution for getting multiple bits of data

php - cURL PHP SSL - 无法验证服务器端,但并非总是如此

php - 从同一 Controller 文件访问 2 个不同的表