2013-03-16 71 views
-4

我如何驗證對以下規則的字符串:PHP正則表達式:如何編寫規則

$string = 'int(11)'; 

Rule: first 4 characters MUST be 'int(' 
Rule: next must be a number between 1 and 11 
Rule: next must be a ')' 
Rule: Everything else will fail 

經驗豐富的PHP開發在這裏 - 正則表達式是不是我的強項..

任何幫助或建議歡迎。 謝謝你們..

回答

4
if (preg_match('/int\((\d{1,2})\)/', $str, $matches) 
    && (int) $matches[1] <= 11 && (int) $matches[1] > 0 
    ) { 
    // ... do something nice 
} else { 
    echo 'Failed!!!' 
} 

或者,如果你想不使用預浸庫(可以更快):

$str = 'int(11)'; 
$i = substr($str, 4, strpos($str, ')') - 4); 

if (substr($str, 0, 4) === 'int(' 
    && $i <= 11 
    && $i > 0 
    ) { 
    echo 'succes'; 
} else { 
    echo 'fail'; 
} 
+0

+1但語法錯誤 - '= <'應該是'<='... – ShuklaSannidhya 2013-03-16 14:42:18

+0

@Sann謝謝,修正它。 – 2013-03-16 14:43:02

4

使用正則表達式int\((\d|1[01])\)

int\((第一條規則

(\d|1[01])第二條規則

\)第三個規則

+0

+1,這是一個聰明的! – 2013-03-16 14:35:30

2

這個正則表達式更小:

int\((\d1?)\) 

或無捕獲組(如果你不需要檢索的數值)。

int\(\d1?\)