Regex

Valida que un valor coincide con una expresión regular.

Aplica a propiedad o método
Opciones
Clase Symfony\Component\Validator\Constraints\Regex
Validador Symfony\Component\Validator\Constraints\RegexValidator

Uso básico

Supongamos que tienes un campo descripción y que deseas verificar que comienza con un carácter constituyente de palabra válido. La expresión regular para comprobar esto sería /^\w+/, la cual indica que estás buscando al menos uno o más caracteres constituyentes de palabra al principio de la cadena:

  • YAML
    # src/Acme/BlogBundle/Resources/config/validation.yml
    Acme\BlogBundle\Entity\Author:
        properties:
            description:
                - Regex: "/^\w+/"
  • Annotations
    // src/Acme/BlogBundle/Entity/Author.php
    namespace Acme\BlogBundle\Entity;
    
    use Symfony\Component\Validator\Constraints as Assert;
    
    class Autor
    {
        /**
         * @Assert\Regex("/^\w+/")
         */
        protected $description;
    }
    
  • XML
    <!-- src/Acme/BlogBundle/Resources/config/validation.xml -->
    <class name="Acme\BlogBundle\Entity\Author">
        <property name="description">
            <constraint name="Regex">
                <option name="pattern">/^\w+/</option>
            </constraint>
        </property>
    </class>
    
  • PHP
    // src/Acme/BlogBundle/Entity/Author.php
    namespace Acme\BlogBundle\Entity;
    
    use Symfony\Component\Validator\Mapping\ClassMetadata;
    use Symfony\Component\Validator\Constraints as Assert;
    
    class Autor
    {
        public static function loadValidatorMetadata(ClassMetadata $metadata)
        {
            $metadata->addPropertyConstraint('description', new Assert\Regex(array(
                'pattern' => '/^\w+/',
            )));
        }
    }
    

Alternativamente, puedes fijar la opción match a false con el fin de confirmar que una determinada cadena no coincide. En el siguiente ejemplo, afirmas que el campo firstName no contiene ningún número y proporcionas un mensaje personalizado:

  • YAML
    # src/Acme/BlogBundle/Resources/config/validation.yml
    Acme\BlogBundle\Entity\Author:
        properties:
            firstName:
                - Regex:
                    pattern: "/\d/"
                    match:   false
                    message: Your name cannot contain a number
  • Annotations
    // src/Acme/BlogBundle/Entity/Author.php
    namespace Acme\BlogBundle\Entity;
    
    use Symfony\Component\Validator\Constraints as Assert;
    
    class Autor
    {
        /**
         * @Assert\Regex(
         *     pattern="/\d/",
         *     match=false,
         *     message="Your name cannot contain a number"
         * )
         */
        protected $firstName;
    }
    
  • XML
    <!-- src/Acme/BlogBundle/Resources/config/validation.xml -->
    <class name="Acme\BlogBundle\Entity\Author">
        <property name="firstName">
            <constraint name="Regex">
                <option name="pattern">/\d/</option>
                <option name="match">false</option>
                <option name="message">Your name cannot contain a number</option>
            </constraint>
        </property>
    </class>
    
  • PHP
    // src/Acme/BlogBundle/Entity/Author.php
    namespace Acme\BlogBundle\Entity;
    
    use Symfony\Component\Validator\Mapping\ClassMetadata;
    use Symfony\Component\Validator\Constraints as Assert;
    
    class Autor
    {
        public static function loadValidatorMetadata(ClassMetadata $metadata)
        {
            $metadata->addPropertyConstraint('firstName', new Assert\Regex(array(
                'pattern' => '/\d/',
                'match'   => false,
                'message' => 'Your name cannot contain a number',
            )));
        }
    }
    

Opciones

pattern

tipo: string [default option]

Esta opción requerida es el patrón de la expresión regular con el cual se comparará lo ingresado. Por omisión, este validador no funcionará si la cadena introducida no coincide con la expresión regular (a través de la función preg_match de PHP). Sin embargo, si estableces match en false, la validación fallará si la cadena ingresada no coincide con este patrón.

match

tipo: Boolean predeterminado: true

Si es true (o no se ha fijado), este validador pasará si la cadena dada coincide con el patrón (pattern) de la expresión regular. Sin embargo, cuando estableces esta opción en false, ocurrirá lo contrario: la validación pasará si la cadena ingresada no coincide con el patrón de la expresión regular.

message

tipo: string predefinido: This value is not valid (Este valor no es válido)

Este es el mensaje que se mostrará si el validador falla.

Bifúrcame en GitHub