You are here

class Regex in Plug 7

@Target({"PROPERTY", "METHOD", "ANNOTATION"})

@author Bernhard Schussek <bschussek@gmail.com>

@api

Hierarchy

  • class \Symfony\Component\Validator\Constraint
    • class \Symfony\Component\Validator\Constraints\Regex

Expanded class hierarchy of Regex

3 files declare their use of Regex
RegexTest.php in lib/Symfony/validator/Symfony/Component/Validator/Tests/Constraints/RegexTest.php
RegexValidatorTest.php in lib/Symfony/validator/Symfony/Component/Validator/Tests/Constraints/RegexValidatorTest.php
XmlFileLoaderTest.php in lib/Symfony/validator/Symfony/Component/Validator/Tests/Mapping/Loader/XmlFileLoaderTest.php

File

lib/Symfony/validator/Symfony/Component/Validator/Constraints/Regex.php, line 24

Namespace

Symfony\Component\Validator\Constraints
View source
class Regex extends Constraint {
  public $message = 'This value is not valid.';
  public $pattern;
  public $htmlPattern;
  public $match = true;

  /**
   * {@inheritdoc}
   */
  public function getDefaultOption() {
    return 'pattern';
  }

  /**
   * {@inheritdoc}
   */
  public function getRequiredOptions() {
    return array(
      'pattern',
    );
  }

  /**
   * Converts the htmlPattern to a suitable format for HTML5 pattern.
   * Example: /^[a-z]+$/ would be converted to [a-z]+
   * However, if options are specified, it cannot be converted.
   *
   * Pattern is also ignored if match=false since the pattern should
   * then be reversed before application.
   *
   * @link http://dev.w3.org/html5/spec/single-page.html#the-pattern-attribute
   *
   * @return string|null
   */
  public function getHtmlPattern() {

    // If htmlPattern is specified, use it
    if (null !== $this->htmlPattern) {
      return empty($this->htmlPattern) ? null : $this->htmlPattern;
    }

    // Quit if delimiters not at very beginning/end (e.g. when options are passed)
    if ($this->pattern[0] !== $this->pattern[strlen($this->pattern) - 1]) {
      return;
    }
    $delimiter = $this->pattern[0];

    // Unescape the delimiter
    $pattern = str_replace('\\' . $delimiter, $delimiter, substr($this->pattern, 1, -1));

    // If the pattern is inverted, we can simply wrap it in
    // ((?!pattern).)*
    if (!$this->match) {
      return '((?!' . $pattern . ').)*';
    }

    // If the pattern contains an or statement, wrap the pattern in
    // .*(pattern).* and quit. Otherwise we'd need to parse the pattern
    if (false !== strpos($pattern, '|')) {
      return '.*(' . $pattern . ').*';
    }

    // Trim leading ^, otherwise prepend .*
    $pattern = '^' === $pattern[0] ? substr($pattern, 1) : '.*' . $pattern;

    // Trim trailing $, otherwise append .*
    $pattern = '$' === $pattern[strlen($pattern) - 1] ? substr($pattern, 0, -1) : $pattern . '.*';
    return $pattern;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
Constraint::$errorNames protected static property Maps error codes to the names of their constants 16
Constraint::$payload public property Domain-specific data attached to a constraint
Constraint::addImplicitGroupName public function Adds the given group if this constraint is in the Default group. 1
Constraint::CLASS_CONSTRAINT constant Marks a constraint that can be put onto classes.
Constraint::DEFAULT_GROUP constant The name of the group given to all constraints with no explicit group.
Constraint::getErrorName public static function Returns the name of the given error code.
Constraint::getTargets public function Returns whether the constraint can be put onto classes, properties or both. 11
Constraint::PROPERTY_CONSTRAINT constant Marks a constraint that can be put onto properties.
Constraint::validatedBy public function Returns the name of the class that validates this constraint. 1
Constraint::__construct public function Initializes the constraint with options. 10
Constraint::__get public function Returns the value of a lazily initialized option.
Constraint::__set public function Sets the value of a lazily initialized option.
Constraint::__sleep public function Optimizes the serialized value to minimize storage space.
Regex::$htmlPattern public property
Regex::$match public property
Regex::$message public property
Regex::$pattern public property
Regex::getDefaultOption public function Returns the name of the default option. Overrides Constraint::getDefaultOption
Regex::getHtmlPattern public function Converts the htmlPattern to a suitable format for HTML5 pattern. Example: /^[a-z]+$/ would be converted to [a-z]+ However, if options are specified, it cannot be converted.
Regex::getRequiredOptions public function Returns the name of the required options. Overrides Constraint::getRequiredOptions