diff --git a/src/Valitron/Validator.php b/src/Valitron/Validator.php index 77305fa..e7e0fe1 100644 --- a/src/Valitron/Validator.php +++ b/src/Valitron/Validator.php @@ -246,7 +246,7 @@ class Validator { if (isset($params[0]) && (bool) $params[0]){ //strict mode - return preg_match('/^-?([0-9])+$/i', $value); + return preg_match('/^([0-9]|-[1-9]|-?[1-9][0-9]*)$/i', $value); } return filter_var($value, \FILTER_VALIDATE_INT) !== false; diff --git a/tests/Valitron/ValidateTest.php b/tests/Valitron/ValidateTest.php index 6abdf6e..64bc5d8 100644 --- a/tests/Valitron/ValidateTest.php +++ b/tests/Valitron/ValidateTest.php @@ -143,11 +143,37 @@ class ValidateTest extends BaseTestCase $v->rule('integer', 'num'); $this->assertTrue($v->validate()); - $v = new Validator(array('num' => '+41243')); $v->rule('integer', 'num', true); $this->assertFalse($v->validate()); + $v = new Validator(array('num' => '-1')); + $v->rule('integer', 'num', true); + $this->assertTrue($v->validate()); + + $v = new Validator(array('num' => '-0')); + $v->rule('integer', 'num', true); + $this->assertFalse($v->validate()); + + $v = new Validator(array('num' => '0')); + $v->rule('integer', 'num', true); + $this->assertTrue($v->validate()); + + $v = new Validator(array('num' => '+0')); + $v->rule('integer', 'num', true); + $this->assertFalse($v->validate()); + + $v = new Validator(array('num' => '+1')); + $v->rule('integer', 'num', true); + $this->assertFalse($v->validate()); + + $v = new Validator(array('num' => '0123')); + $v->rule('integer', 'num', true); + $this->assertFalse($v->validate()); + + $v = new Validator(array('num' => '-0123')); + $v->rule('integer', 'num', true); + $this->assertFalse($v->validate()); } public function testIntegerInvalid() @@ -156,7 +182,6 @@ class ValidateTest extends BaseTestCase $v->rule('integer', 'num'); $this->assertFalse($v->validate()); - $v = new Validator(array('num' => '--1231')); $v->rule('integer', 'num'); $this->assertFalse($v->validate());