diff --git a/src/Illuminate/Validation/Concerns/ValidatesAttributes.php b/src/Illuminate/Validation/Concerns/ValidatesAttributes.php index 5c04f1a337b5..ea62107bcd0c 100644 --- a/src/Illuminate/Validation/Concerns/ValidatesAttributes.php +++ b/src/Illuminate/Validation/Concerns/ValidatesAttributes.php @@ -1279,7 +1279,7 @@ public function validateUppercase($attribute, $value, $parameters) */ public function validateHexColor($attribute, $value) { - return preg_match('/^#(?:[0-9a-fA-F]{3}){1,2}$/', $value) === 1; + return preg_match('/^#(?:[0-9a-fA-F]{3}){1,2}(?:[0-9a-fA-F]{2})?$|^#(?:[0-9a-fA-F]{4}){1,2}$/', $value) === 1; } /** diff --git a/tests/Validation/ValidationValidatorTest.php b/tests/Validation/ValidationValidatorTest.php index 0f6acb08dde0..5146996a7d22 100755 --- a/tests/Validation/ValidationValidatorTest.php +++ b/tests/Validation/ValidationValidatorTest.php @@ -1928,14 +1928,30 @@ public function testValidateInArray() public function testValidateHexColor() { $trans = $this->getIlluminateArrayTranslator(); + $v = new Validator($trans, ['color'=> '#FFF'], ['color'=>'hex_color']); + $this->assertTrue($v->passes()); + $v = new Validator($trans, ['color'=> '#FFFF'], ['color'=>'hex_color']); + $this->assertTrue($v->passes()); $v = new Validator($trans, ['color'=> '#FFFFFF'], ['color'=>'hex_color']); $this->assertTrue($v->passes()); - $v = new Validator($trans, ['color'=> '#FFF'], ['color'=>'hex_color']); + $v = new Validator($trans, ['color'=> '#FF000080'], ['color'=>'hex_color']); + $this->assertTrue($v->passes()); + $v = new Validator($trans, ['color'=> '#FF000080'], ['color'=>'hex_color']); + $this->assertTrue($v->passes()); + $v = new Validator($trans, ['color'=> '#00FF0080'], ['color'=>'hex_color']); $this->assertTrue($v->passes()); $v = new Validator($trans, ['color'=> '#GGG'], ['color'=>'hex_color']); $this->assertFalse($v->passes()); + $v = new Validator($trans, ['color'=> '#GGGG'], ['color'=>'hex_color']); + $this->assertFalse($v->passes()); + $v = new Validator($trans, ['color'=> '#GGGGGG'], ['color'=>'hex_color']); + $this->assertFalse($v->passes()); $v = new Validator($trans, ['color'=> '#GGGGGGG'], ['color'=>'hex_color']); $this->assertFalse($v->passes()); + $v = new Validator($trans, ['color'=> '#FFGG00FF'], ['color'=>'hex_color']); + $this->assertFalse($v->passes()); + $v = new Validator($trans, ['color'=> '#00FF008X'], ['color'=>'hex_color']); + $this->assertFalse($v->passes()); } public function testValidateConfirmed()