Skip to content

Commit

Permalink
Issue #5307: HTML regexp when match is false
Browse files Browse the repository at this point in the history
When match is false the html5 validation regexp should be either inverted or not added.
Since we are in RC added a fix where this is not added, but marked a @todo so that this
can be revisited and we try to inverse the regexp instead.
  • Loading branch information
rdohms committed Aug 30, 2012
1 parent c4fa0b1 commit 7503ec9
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 0 deletions.
10 changes: 10 additions & 0 deletions src/Symfony/Component/Validator/Constraints/Regex.php
Expand Up @@ -62,13 +62,23 @@ public function getHtmlPattern()
* 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]) ? '.*' : '';
Expand Down
Expand Up @@ -162,6 +162,13 @@ public function testHtmlPattern()
'pattern' => '/[a-z]+/',
));
$this->assertEquals('.*[a-z]+.*', $constraint->getHtmlPattern());

// Dropped because of match=false
$constraint = new Regex(array(
'pattern' => '/[a-z]+/',
'match' => false
));
$this->assertNull($constraint->getHtmlPattern());
}

}

0 comments on commit 7503ec9

Please sign in to comment.