【问题标题】:php match number for first 2 digits and lengthphp匹配前2位数字和长度的数字
【发布时间】:2015-11-09 04:06:45
【问题描述】:

如果号码有 10 位长度并且前 2 位需要是 09 并且请检查没有空格,我需要检查 php 吗?

样本真实数 = 0912345678

谢谢 拉敏

【问题讨论】:

    标签: php regex preg-match digits string-length


    【解决方案1】:

    您可以通过使用正则表达式来做到这一点,如下所示:

    function checkNumber($number) {
        return !!preg_match('/^09\d{8}$/', "$number");
    }
    

    或者用简单的字符串匹配:

    function checkNumber($number) {
        $number = trim("$number");
        if (strlen($number) != 10)
            return false;
    
        if (substr($number, 0, 2) != "09")
            return false;
    
        return trim($number, "0..9") == "";
    }
    

    两种方法都给出相同的输出:

    var_dump([$number = '0912345678', checkNumber($number)]);
    var_dump([$number = '9012345678', checkNumber($number)]);
    var_dump([$number = '091234567', checkNumber($number)]);
    var_dump([$number = '09123456788', checkNumber($number)]);
    
    // array(2) {
    //   [0]=>
    //   string(10) "0912345678"
    //   [1]=>
    //   bool(true)
    // }
    // array(2) {
    //   [0]=>
    //   string(10) "9012345678"
    //   [1]=>
    //   bool(false)
    // }
    // array(2) {
    //   [0]=>
    //   string(9) "091234567"
    //   [1]=>
    //   bool(false)
    // }
    // array(2) {
    //   [0]=>
    //   string(11) "09123456788"
    //   [1]=>
    //   bool(false)
    // }
    

    另外,正则表达式方法更简单灵活,恕我直言。

    【讨论】:

    • 请添加一些关于您的代码如何解决问题的信息。
    • 非常感谢。非常有帮助。我也尝试了下面的代码,它也有效。 preg_match("/^([09]{2})([0-9]{9})$/", $cellNum)
    • @RaminRabii,但您的代码为 11 位数字提供 true,它们也可以以 09 开头 90,因为 [09]{2} 表示“ 09 的两位数,顺序不限"
    • 非常感谢您的建议。应将其更改为 preg_match("/^([0]{1})([9]{1})([0-9]{8})$/", $cellNum);
    • =) 在[0]{1}[9]{1} 构造中没有任何意义,因为它们可以用简单的09 替换。因此,您可以使用以下模式之一:/^(09)(\d{8})$//^(09)([0-9]{8})$/
    猜你喜欢
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    相关资源
    最近更新 更多