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 |
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:
# src/Acme/BlogBundle/Resources/config/validation.yml
Acme\BlogBundle\Entity\Author:
properties:
description:
- Regex: "/^\w+/"
// src/Acme/BlogBundle/Entity/Author.php
namespace Acme\BlogBundle\Entity;
use Symfony\Component\Validator\Constraints as Assert;
class Autor
{
/**
* @Assert\Regex("/^\w+/")
*/
protected $description;
}
<!-- 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>
// 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:
# 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
// 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;
}
<!-- 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>
// 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',
)));
}
}
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.
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.
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.