2010-09-15 43 views
1

我想弄清楚如何使自定義模式與preg_match/preg_match_all一起使用。preg_match自定義模式

我需要找到[A-Z]{3}[a-z]{1}[A-Z]{3},這將是一個示例AREfGER。 3個大寫字母,1個小寫字母和3個大寫字母。

有人知道如何爲此製作圖案嗎?

回答

3

你可以這樣做:

if(preg_match('/^[A-Z]{3}[a-z][A-Z]{3}$/',$input)) { 
    // $input has 3 uppercase, 1 lowercase and 3 uppercase. 
} 

您可以刪除{1}爲多餘的。

另外請確保您添加開始錨點^和結束錨點$。如果沒有他們,即使模式在輸入的任何地方找到,也會報告成功。例如@AREfGER#

編輯:

要查找文本,您可以使用preg_match_all所有比賽:

if(preg_match_all('/([A-Z]{3}[a-z][A-Z]{3})/',$input,$match)) { 
    // array $match[1] will have all the matches. 
} 
+0

是否可以列出所有匹配項? – NoobiCake 2010-09-15 09:35:52

+0

如果你只是想看看這些匹配,那麼在你完成codaddict提示的'preg_match_all()'調用之後,執行以下操作:'echo'

';print_r($matches[1]);echo'
'; exit;' – 2010-09-15 14:53:48

2

簡單:

preg_match('#[A-Z]{3}[a-z][A-Z]{3}#', $some_string); 

如果此有匹配字符串作爲一個整體:使用開始和結束錨點

preg_match('#^[A-Z]{3}[a-z][A-Z]{3}$#', $some_string);