我有以下驗證,
它應該匹配字母,數字,破折號的字符串。空輸入也應該是有效的。
正常的字符串驗證是好的,但我不能讓它匹配「空」輸入。Laravel空字符串正則表達式驗證
'letter_code' => 'regex:/^[A-Za-z0-9\-]*$/'
letter_code格式無效
測試:
「C14」 //有效
「3.14」 // 「格式是無效的」,如預期
「 - 「//有效
」「//」格式無效「,不應爲
我有以下驗證,
它應該匹配字母,數字,破折號的字符串。空輸入也應該是有效的。
正常的字符串驗證是好的,但我不能讓它匹配「空」輸入。Laravel空字符串正則表達式驗證
'letter_code' => 'regex:/^[A-Za-z0-9\-]*$/'
letter_code格式無效
測試:
「C14」 //有效
「3.14」 // 「格式是無效的」,如預期
「 - 「//有效
」「//」格式無效「,不應爲
如果不添加所需的額外驗證空字符串必須通過
這裏是PHPUnit的測試:
/** @test */
public function letterCode()
{
$trans = new \Illuminate\Translation\Translator(
new \Illuminate\Translation\ArrayLoader, 'en'
);
$regex = 'regex:/^[A-Za-z0-9\-]*$/';
$v = new Validator($trans, ['x' => 'C14'], ['x' => $regex]);
$this->assertTrue($v->passes());
$v = new Validator($trans, ['x' => '3.14'], ['x' => $regex]);
$this->assertFalse($v->passes());
$v = new Validator($trans, ['x' => '-'], ['x' => $regex]);
$this->assertTrue($v->passes());
$v = new Validator($trans, ['x' => ''], ['x' => $regex]);
$this->assertTrue($v->passes());
}
這與Laravel 5.5
測試我只是發現在laracasts forum,有一個nullable
規則。
您可以在official docs中閱讀。
沒有nullable
規則如果還有正則表達式規則,則空白字符串被認爲是無效的。
顯示您的測試用例 –
@Marcin我猜,測試用例是空字符串。 – Tomalak
這是驗證器嗎?你究竟想要做什麼?你想允許和清空字符串或確保它不是空的? – tptcat