求正则,要求如下可以匹配
aa.123.cc
aa.abcdef.cc
aa.abc.def.cc
aa.x.cc
等, 也就是用点隔开,最前面一段是aa,最后一段是cc, 中间至有一个"段"
但是,有个例外
aa.00.cc不匹配我希望用一条正则来表达, 谢谢
aa.123.cc
aa.abcdef.cc
aa.abc.def.cc
aa.x.cc
等, 也就是用点隔开,最前面一段是aa,最后一段是cc, 中间至有一个"段"
但是,有个例外
aa.00.cc不匹配我希望用一条正则来表达, 谢谢
//纯手写,没经测试
preg_match('/^aa\.[^00]+\.cc/i',$string);
$str = <<<str
aa.123.cc
ab.123.cc
ad.123.234.423.4.23.4.23.4.3.cc
aa.123.234.4203.4.23.4.23.4.3.cc
aa.abc.cc
aa.abc.12430214.3214.12.4.4vba.cc
aa.abc.def.cc
aa.x.cc
aa.000000.cc
aa.00.cc
aa.000.cc
aa.0.cc
str;
$pattern = "/^[a]{2}.*[c]{2}$/im";
preg_match_all($pattern, $str, $aMatch);
for ($i=0; $i<count($aMatch[0]);$i++)
if (preg_match("@^[a]{2}.00.[c]{2}$@", $aMatch[0][$i]))
unset($aMatch[0][$i]);
print_r($aMatch[0]);
$str = <<<str
aa.123.cc
ab.123.cc
ad.123.234.423.4.23.4.23.4.3.cc
aa.123.234.4203.4.23.4.23.4.3.cc
aa.abc.cc
aa.abc.12430214.3214.12.4.4vba.cc
aa.abc.def.cc
aaa.x.cc
aa.000000.cc
aa.00.cc
aa.000.cc
aa.0.cc
str;
$pattern = "/^[a]{2}[.].*[c]{2}$/im";
preg_match_all($pattern, $str, $aMatch);
for ($i=0; $i<count($aMatch[0]);$i++)
if (preg_match("@^[a]{2}.00.[c]{2}$@", $aMatch[0][$i]))
unset($aMatch[0][$i]);
print_r($aMatch[0]);修正一下
<?php
$reg='/^aa\.\b(?!00\b).*\.cc$/';
echo(
preg_match($reg,"aa.xx.yy.zz.cc")
);
echo("\n");
echo(
preg_match($reg,"aa.001.cc")
);
echo("\n");
echo(
preg_match($reg,"aa.00.cc")
);
echo("\n");
?>
$str = <<<str
aa.123.cc
ab.123.cc
ad.123.234.423.4.23.4.23.4.3.cc
aa.123.234.4203.4.23.4.23.4.3.cc
aa.abc.cc
aa.abc.12430214.3214.12.4.4vba.cc
aa.abc.def.cc
aaa.x.cc
aa.000000.cc
aa.00.fdasf.cc
aa.00.cc
aa.000.cc
aa.0.cc
str;
//$pattern = "/^[a]{2}[.].*[c]{2}$/im";
$pattern='/^aa\.((\b(?!00\b).*)|(\b(00\b).[^cc]+))+\.cc$/im';
preg_match_all($pattern, $str, $aMatch);
//for ($i=0; $i<count($aMatch[0]);$i++)
//if (preg_match("@^[a]{2}.00.[c]{2}$@", $aMatch[0][$i]))
// unset($aMatch[0][$i]);
print_r($aMatch[0]);
你的正则会把aa.00.fdasf.cc这个略掉,按照你说的这个应该是满足条件的,在你的基础上修正一下
(?:(?!某串字符).)*你可以试试
$str = <<<str
aa.123.cc
ab.123.cc
ad.123.234.423.4.23.4.23.4.3.cc
aa.123.234.4203.4.23.4.23.4.3.cc
aa.abc.cc
aa.abc.12430214.3214.12.4.4vba.cc
aa.abc.def.cc
aa.x.cc
aa.000000.cc
aa.00.cc
aa.000.00.cc
aa.0.cc
str;
echo "<pre/>";
preg_match_all('#\baa(?=\.)(?:(?!\.00\.).)*(?<=\.)cc\b#i',$str,$m);
print_r($m);