Я хочу сопоставить значение долготы: -3.6503552000000004
, используя preg_match('/^([+\-])?(?:180(?:(?:\.0{1,6})?)|(?:[0-9]|[1-9][0-9]|1[0-7][0-9])(?:(?:\.[0-9]{1,6})?))$/', $value)
, но, похоже, мое регулярное выражение не может проверить, если за точкой больше 15 цифр.
Вот тест, который я прошел, который прошел:
<?php
namespace Tests\Unit\Rules;
use App\Rules\LongitudeRule;
use Tests\TestCase;
class LongitudeRuleTest extends TestCase
{
/** @test */
public function pass_when_value_between_min_180_to_plus_180()
{
$this->assertTrue((new LongitudeRule)->passes('longitude', '-180'));
$this->assertTrue((new LongitudeRule)->passes('longitude', '+180'));
$this->assertTrue((new LongitudeRule)->passes('longitude', '-45'));
$this->assertTrue((new LongitudeRule)->passes('longitude', '+45'));
$this->assertTrue((new LongitudeRule)->passes('longitude', '0'));
}
/** @test */
public function pass_when_value_between_min_180_to_plus_180_and_float()
{
$this->assertTrue((new LongitudeRule)->passes('longitude', '-180.0'));
$this->assertTrue((new LongitudeRule)->passes('longitude', '+180.0'));
$this->assertTrue((new LongitudeRule)->passes('longitude', '-45.1'));
$this->assertTrue((new LongitudeRule)->passes('longitude', '+45.1'));
$this->assertTrue((new LongitudeRule)->passes('longitude', '0.0'));
}
/** @test */
public function pass_when_value_between_min_180_to_plus_180_and_no_plus_assigned()
{
$this->assertTrue((new LongitudeRule)->passes('longitude', '-180'));
$this->assertTrue((new LongitudeRule)->passes('longitude', '180.0'));
$this->assertTrue((new LongitudeRule)->passes('longitude', '-45.1'));
$this->assertTrue((new LongitudeRule)->passes('longitude', '45'));
}
/** @test */
public function failed_when_value_has_using_comma()
{
$this->assertFalse((new LongitudeRule)->passes('longitude', '45,1'));
$this->assertFalse((new LongitudeRule)->passes('longitude', '-45,1'));
}
/** @test */
public function failed_when_value_is_wrong()
{
$this->assertFalse((new LongitudeRule)->passes('longitude', 'A'));
}
}
Я новичок в regex, извините! Итак ... Я хочу сказать спасибо, если кто-то может помочь? ?