2017-06-28 23 views
1

我想在php中實現GST驗證。在PHP中的GST數字驗證

if(!preg_match("/^([0-5]){2}([a-zA-Z]){5}([0-9]){4}([a-zA-Z]){1}([a-zA-Z0-9]){1}([a-zA-Z]){1}([0-9]){1}?$/", $testcase)) { 
     $flag = "Invalid GST number "; 
     return $flag; 
    } 

前兩位數字是狀態碼,它將介於01到35之間,但我的代碼將接受01到55這是錯誤的。任何方式來驗證它只有35。

回答

1

我想你應該先從正則表達式:

/^([0-2][0-9])|(3[0-5])

編輯:有缺陷,這也讓00

+0

感謝哥們,你的回答給了我一個主意。 preg_match(「/ ^([0-3]){1}([1-5]){1}([a-zA-Z]){5}([0 -9]){4}([A-ZA-Z]){1}([A-ZA-Z0-9]){1}([A-ZA-Z]){1}([0-9 ]){1}?$ /「,$ testcase) 它的工作對我 –

+0

你可能需要玩弄(EN)才能完全工作 –

+1

你解決方案也開始工作時10或20?或26? –

4

您需要打破你號碼範圍爲實際的數字。

下面的工作

if(!preg_match("/^(0[1-9]|[1-2][0-9]|3[0-5])([a-zA-Z]){5}([0-9]){4}([a-zA-Z]){1}([a-zA-Z0-9]){1}([a-zA-Z]){1}([0-9]){1}?$/", $testcase)) { 
    $flag = "Invalid GST number "; 
    return $flag; 
} 

數量正則表達式的工作原理如下,我們打出第一個2位驗證到3個scenarios.We使用或操作|分解成場景。

(0[1-9]|[1-2][0-9]|3[0-5]) 
  • 的2位具有零
    • 開始第二位數字只能是1和9之間
    • 允許:01-09
  • 的2位數字用啓動1或2
    • 允許第二個degit爲0-9
    • 允許10-29
  • 的2位數字用3
    • 啓動允許該第二個數字爲0-5
    • 允許30-35

希望這可以幫助

+0

爲我工作.. :) –

+0

很高興爲你工作!經過測試,如果它的所有工作爲你請標記爲答案,再次感謝! – JParkinson1991