2014-01-16 30 views
0

我需要創建正則表達式確保包括0的用戶輸入號碼包括4位數字即使首創的數字是0。正則表達式接受完全4位數字。在開始

  • 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(); 
+0

你是否正在使用此正則表達式進行驗證之前將其轉換爲整型數據? –

+0

'set_id(0012)'與'set_id(12)'沒有區別。這裏不保留前導零。 – Jens

回答

0

嘗試使用:

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

結果:

0049 
1

正則表達式工作。因此,如果前導零被刪除,這意味着您的輸入字符串已被解析爲數字。你需要停止發生 - 正則表達式本身是正確的,並且works just fine with leading zeroes

+0

這裏是我的代碼: \t公共函數SET_ID($ NUM){\t \t $ \t預浸料= 「/^[0-9] {4} $ /」; \t \t如果(的preg_match($預浸料,$ NUM)) \t \t \t {$這 - > ID = $ NUM;}! 「ID不能接受少於4位的數字」 \t \t \t否則{回波;} \t} \t public function get_id(){ \t \t return $ this-> id; \t} } $ a = new Business(); $ a-> set_id(0012); echo $ a-> get_id(); ...... –

+1

您需要調用'set_id('0012');',而不是'set_id(0012);'。 –

0

因爲PHP對象是dimamicly和 '123'(字符串)等於123(INT),我場始終變化,除非我用verbumSapienti解決方案。