class Regex

@author Bernhard Schussek <bschussek@gmail.com>

@api

Hierarchy

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

Expanded class hierarchy of Regex

1 file declares its use of Regex
RegexValidatorTest.php in drupal/core/vendor/symfony/validator/Symfony/Component/Validator/Tests/Constraints/RegexValidatorTest.php

File

drupal/core/vendor/symfony/validator/Symfony/Component/Validator/Constraints/Regex.php, line 23

Namespace

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

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

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

  /**
   * Returns htmlPattern if exists or pattern is convertible.
   *
   * @return string|null
   */
  public function getHtmlPattern() {

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

  /**
   * Convert 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.
   *
   * @todo reverse pattern in case match=false as per issue #5307
   *
   * @link http://dev.w3.org/html5/spec/single-page.html#the-pattern-attribute
   *
   * @return string|null
   */
  private function getNonDelimitedPattern() {

    // If match = false, pattern should not be added to HTML5 validation
    if (!$this->match) {
      return null;
    }
    if (preg_match('/^(.)(\\^?)(.*?)(\\$?)\\1$/', $this->pattern, $matches)) {
      $delimiter = $matches[1];
      $start = empty($matches[2]) ? '.*' : '';
      $pattern = $matches[3];
      $end = empty($matches[4]) ? '.*' : '';

      // Unescape the delimiter in pattern
      $pattern = str_replace('\\' . $delimiter, $delimiter, $pattern);
      return $start . $pattern . $end;
    }
    return null;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
Constraint::$groups public property
Constraint::addImplicitGroupName public function Adds the given group if this constraint is in the Default group
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::getTargets public function Returns whether the constraint can be put onto classes, properties or both 7
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 2
Constraint::__construct public function Initializes the constraint with options. 10
Constraint::__set public function Unsupported operation.
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 Returns htmlPattern if exists or pattern is convertible.
Regex::getNonDelimitedPattern private function Convert 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