2014-11-02 113 views
1

我在這裏丟失了一些東西。4位數字( d {4})搜索非常簡單的正則表達式誤報

我想看看一個字符串是否包含4位數字。我之前做過這個,但不是多年,不能解決我做錯了什麼。

$ stuff是一個來自mySQL數據庫的字符串。 (目前,從表單來的所以肯定應該工作。)

$stuff=$_POST['stuff']; 
$regex="/\d{4}/"; 
$integerStuff=intval($stuff);//in case somehow seeing as n on-digit!!! 
if (preg_match($regex, $integerStuff)) {echo " Found 4 dig";} 

我想如果的preg_match沒有發現它返回false的模式,但同時123不匹配,12345等做。

我認爲{4}意味着4次發生。

愚蠢的問題,我知道,但一直困在這個多年。

+0

'{4}'意味着恰好有4個,但你​​的正則表達式是不固定和字符串中的任何比賽。如果在數字之前有前導垃圾,則'int'強制轉換也可以返回零。 – mario 2014-11-02 23:34:04

+0

@mario謝謝有用的提醒。 – BeNice 2014-11-02 23:41:31

回答

2

就像你說的,

$regex="/\d{4}/";

查找是4位數。但是什麼之前或之後並不重要。你想包括「行開始」 ^和「行尾」 $:

$regex="/^\d{4}$/";

+0

@tkausi你是一個拯救生命的人,謝謝。浪費了一個多小時。如果我再次卡住,我可能會回來:-) – BeNice 2014-11-02 23:41:00