正则表达式接受4位数字。开头包括0

时间:2014-01-16 11:32:47

标签: php regex

我需要创建正则表达式,以确保用户输入的数字包括4位数字,即使第一位数字为0。

  • 0001应该是真的。
  • 00020应该是假的。
  • 030应该是假的。

这个正则表达式应该包含在一个类中,当我使用: / ^ \ d {4} $ / 时,如果数字以0开头则不起作用。(自动更改为int并删除零..)。 如果我把数字放在“”它可以工作,但我想要更好的正则表达式。

如何编写正则表达式,以便在数字的开头接受0?

由于 这是我的代码:

public function set_id($num){   
        $preg = "/^[0-9]{4}$/"; 
        if(preg_match($preg, $num))
            {$this->id = $num;}
            else {echo "<b>ID</b> can not accept less then 4 digit number!";}
    }
    public function get_id(){
        return $this->id;
    }
}

$a = new Business();
$a->set_id(0012);
echo $a->get_id();

3 个答案:

答案 0 :(得分:1)

正则表达式适用于字符串,而不是数字。因此,如果已删除前导零,则表示您的输入字符串已被解析为数字。你需要阻止它发生 - 正则表达式本身是正确的works just fine with leading zeroes

答案 1 :(得分:0)

尝试使用:

$number = '49';
$formattedNumber = sprintf('%04d', $number);
echo $formattedNumber;

结果:

0049

答案 2 :(得分:0)

因为php对象是dimamicly和&#39; 123&#39; (字符串)等于123(int),我的字段总是更改除非我使用verbumSapienti解决方案。