2017-10-15 58 views
0

我有以下驗證,
它應該匹配字母,數字,破折號的字符串。空輸入也應該是有效的。
正常的字符串驗證是好的,但我不能讓它匹配「空」輸入。Laravel空字符串正則表達式驗證

'letter_code' => 'regex:/^[A-Za-z0-9\-]*$/' 

letter_code格式無效

測試
「C14」 //有效
「3.14」 // 「格式是無效的」,如預期
「 - 「//有效
」「//」格式無效「,不應爲

+0

顯示您的測試用例 –

+1

@Marcin我猜,測試用例是空字符串。 – Tomalak

+0

這是驗證器嗎?你究竟想要做什麼?你想允許和清空字符串或確保它不是空的? – tptcat

回答

2

如果不添加所需的額外驗證空字符串必須通過

這裏是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

0

測試我只是發現在laracasts forum,有一個nullable規則。
您可以在official docs中閱讀。

沒有nullable規則如果還有正則表達式規則,則空白字符串被認爲是無效的。