我正在试图弄清楚如何使用preg_match / preg_match_all制作自定义模式。
我需要找到[A-Z]{3}[a-z]{1}[A-Z]{3}
,这将是一个例子AREFGER。
3个大写,1个小写和3个大写。
任何人都知道如何为此制作模式?
答案 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);