如何在Symfony2框架中的Entity类中验证正则表达式的电子邮件地址

时间:2016-08-25 23:15:21

标签: php entity-framework validation symfony symfony-3.1

我在Symfony2框架中提交表单时,尝试使用正则表达式验证电子邮件地址。我在checkMX and checkHost类中使用了Entity个属性。这样做了。但我无法验证正则表达式 {,$,#,!,^ ....请帮助某人...... 这是我的代码片段..

<?php

namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * product1
 */
class product1
{
    /**
     * @var int
     */
    private $id;


    /**
     * @var string
     * @Assert\Email(
     *
     *     checkHost= true,
     *     checkMX = true,
     *     message="Invalid email host"
     *
     *
     * )
     * @Assert\Email(
     *     strict=false,
     *     message="invalid"
     * )
     *
     */
    private $email;

    /**
     * Get id
     *
     * @return int
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set email
     *
     * @param string $email
     *
     * @return product1
     */
    public function setEmail($email)
    {
        $this->email = $email;

        return $this;
    }

    /**
     * Get email
     *
     * @return string
     */
    public function getEmail()
    {
        return $this->email;
    }
}

2 个答案:

答案 0 :(得分:3)

根据documentation,您可以使用此注释:

/**
 * @Assert\Regex(
 *     pattern="/^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$/",
 *     message="not_valid_email"
 * )
 *
 * @var string
 */
private $email;

答案 1 :(得分:0)

http://symfony.com/doc/current/reference/constraints/Email.html

我认为@Assert \ Email可以完成这项工作,但如果你想实现另外一个定制的正则表达式,你可以使用Assert标签。

 * @Assert\Regex(
 *     pattern = "/^[a-zA-Z0-9\-\_]+$/",
 *     message = "invalid characters"
 * )

我知道这个正则表达式不是你想要的,但是我认为这里使用的格式与其他任何语言中使用的其他常规格式都没有太大差别(有些字符需要用反斜杠转义),我认为。