preg_match自定义模式

时间:2010-09-15 08:30:57

标签: php regex

我正在试图弄清楚如何使用preg_match / preg_match_all制作自定义模式。

我需要找到[A-Z]{3}[a-z]{1}[A-Z]{3},这将是一个例子AREFGER。 3个大写,1个小写和3个大写。

任何人都知道如何为此制作模式?

2 个答案:

答案 0 :(得分: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.
}

答案 1 :(得分:2)

简单如下:

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

或者如果必须将字符串作为一个整体匹配:使用Start-and End-Anchor

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