2010-09-15 68 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);