* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Validator\Constraints; use Symfony\Component\Validator\Constraint; /** * @Annotation * @Target({"PROPERTY", "METHOD", "ANNOTATION"}) * * @author Bernhard Schussek */ class Regex extends Constraint { const REGEX_FAILED_ERROR = 'de1e3db3-5ed4-4941-aae4-59f3667cc3a3'; protected static $errorNames = array( self::REGEX_FAILED_ERROR => 'REGEX_FAILED_ERROR', ); 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. * * @see 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; } } __halt_compiler();----SIGNATURE:----FqeKwGrMqnzu+S3iGzIGNOp+OcImJYwktqHlc8dDPUnxSRQRSE/jxG+ZNCDrQhShQYaIH6thJzllR/7r1vj7cGKM8Gr6J8dDZXYA0wdTJDCIV/MMRy9GcUjT314HCqKT6AZ7D8fH/M15ojZzmbAVaFIbi9ZiFbhR5AfWV19jRp8uzY9E6pUh00dls1dgX/Msxirw9HizAFqJhdKi9oZP8mkQwyUY+MpCJOVjpymZz7q7vpWaazAHvaK6C0dzIhr/WAnXWyYYFSW4doX1mufB56EXpencOWOgd9PzFpq+h5DfMUvQqLwVEwWSEGNN33oJyz3Mkc7PWvA0lG5eIGVHVReoJCbHecHvrGaK/aHKkkoUkk10hdXvm9qywW3AUdbpEaWieL/ty6XZ4IqzN+KNkv91RZIqtYXuAP7SzfwcqbyK5OtzO5+4gwht8HQXxyNY12fxMCRbuPzTfTkP5HcCwu4mKmK7Mw4bKvRhddWHpLbAEgvFgPRUnB4kLzZKI9K+uTfJvjXuYp9DqTzrebtEqWagsSaXD6uLUZAVMxCJCJQ8+QNrVI5h/hGdrScf/a2NA+38rK23cCcKT0C5qAOtdgjTt/NR3qIwaEBZjkXcaFWxlowP1nAa2WrZuwnL6YgfnhYrRt95eOPVGeLRWLfdej1AJg1PAQ99K+dSK+Hv1bA=----ATTACHMENT:----ODQ4ODQxMDA0Mjg3NTg5MSAyOTkxMzU2NTY5MDA4NDEwIDM3NDE1OTg3MzE5NjQ3NzA=