php 中的 GST 号码验证

Akh*_*mar 2 php regex

我正在尝试在 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;
    } 
Run Code Online (Sandbox Code Playgroud)

第 2 位数字是州代码,介于 01 到 35 之间,但我的代码将接受 01 到 55,这是错误的。任何方法都只能验证最多 35 个。

JPa*_*991 5

您需要将数字范围分解为实际数字。

以下将起作用

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;
} 
Run Code Online (Sandbox Code Playgroud)

数字正则表达式的工作原理如下,我们将前 2 位数字验证分为 3 个场景。我们使用 or 运算符| 分成场景。

(0[1-9]|[1-2][0-9]|3[0-5])
Run Code Online (Sandbox Code Playgroud)
  • 2 位数字以 0 开头
    • 第二位数字只能是 1 到 9 之间
    • 允许:01-09
  • 2 位数字以 1 或 2 开头
    • 允许第二个数字为 0-9
    • 允许 10-29
  • 2 位数字以 3 开头
    • 允许第二位数字为0-5
    • 允许 30-35

希望这可以帮助