在本文中,我們來了解一下* ,+等量詞的使用。
* 匹配前一個內容的0次1次或多次
<?php
header("content-type: text/html;charset=utf-8");
$mode="/ph*p/";
$string="php"; //匹配成功
//$string="phhhhp"; //匹配成功
//$string="pp"; //匹配成功
if(preg_match($mode,$string)){
echo "匹配成功!";
}else{
echo "不匹配!";
}
?>
. 匹配內容的0次1次或多次,但不包含回車換行。就是說,.代表任何內容。
.經常和*搭配使用, .*表示前導任意字符
例:/g.*d/
god,good,gad ,gaf2514d 都匹配成功
+ 匹配前一個內容的1次或多次
<?php
header("content-type: text/html;charset=utf-8");
$mode="/ph+p/";
$string="php"; //匹配成功
//$string="phhhhp"; //匹配成功
//$string="pp"; //匹配失敗
if(preg_match($mode,$string)){
echo "匹配成功!";
}else{
echo "不匹配!";
}
?>
?匹配前一個內容的0次或1次
<?php
header("content-type: text/html;charset=utf-8");
$mode="/ph?p/";
$string="php"; //匹配成功
//$string="phhhhp"; //匹配失敗
//$string="pp"; //匹配成功
if(preg_match($mode,$string)){
echo "匹配成功!";
}else{
echo "不匹配!";
}
?>
| 選擇匹配,匹配字符串的左邊或者右邊,類似PHP中的| (因為這個運算符合是弱類型導致前面最為整體匹配)
<?php
header("content-type: text/html;charset=utf-8");
$mode="/php|asp/";
//$string="This is php"; //匹配成功
$string="asp users"; //匹配成功
if(preg_match($mode,$string)){
echo "匹配成功!";
}else{
echo "不匹配!";
}
?>
^ 匹配字符串首部內容
<?php
header("content-type: text/html;charset=utf-8");
$mode="/^php/";
//$string="This is php"; //匹配失敗
$string="php users"; //匹配成功
if(preg_match($mode,$string)){
echo "匹配成功!";
}else{
echo "不匹配!";
}
?>
$ 匹配字符串尾部內容
<?php
header("content-type: text/html;charset=utf-8");
$mode="/php$/";
$string="This is php"; //匹配成功
//$string="php users"; //匹配失敗
if(preg_match($mode,$string)){
echo "匹配成功!";
}else{
echo "不匹配!";
}
?>
\b 匹配單詞邊界,邊界可以是空格或者特殊符合
例:
$mode="/\bis\b/";
$str="What is it?";
匹配成功
\B 匹配除帶單詞邊界以外內容,就是不允許有分隔符,與\b相反
{m} 匹配前一個內容的重復次數為m次
<?php
header("content-type: text/html;charset=utf-8");
$mode="/ph{2}p/";
$string="phhp"; //匹配成功
//$string="phhhp"; //匹配失敗
//$string="php"; //匹配失敗
if(preg_match($mode,$string)){
echo "匹配成功!";
}else{
echo "不匹配!";
}
?>
{m,} 匹配前一個內容的重復次數大於等於M次
<?php
header("content-type: text/html;charset=utf-8");
$mode="/ph{2,}p/";
$string="phhp"; //匹配成功
//$string="phhhp"; //匹配成功
//$string="php"; //匹配失敗
//$string="phhhhhhp"; //匹配成功
if(preg_match($mode,$string)){
echo "匹配成功!";
}else{
echo "不匹配!";
}
?>
{m,n} 匹配前一個內容的重復次數M次到N次
<?php
header("content-type: text/html;charset=utf-8");
$mode="/ph{2,4}p/";
$string="phhp"; //匹配成功
//$string="phhhp"; //匹配成功
//$string="php"; //匹配失敗
//$string="phhhhhhp"; //匹配失敗
if(preg_match($mode,$string)){
echo "匹配成功!";
}else{
echo "不匹配!";
}
?>
( ) 合並整體匹配,並放入內存,可使用\\1 ,\\2…依次獲取
例:
$mode="/2016(.*)08\\1(10)/";
$str="2016-08-10";和$str="2016/08/10";都匹配成功
簡單的日期匹配:
$mode="/[0-9]{2,4}(.*)[0-9]{1,2}\\1[0-9]{1,2}/";
$str="2016-08-10";和$str="16/08/10";都匹配成功
URL: http://www.bianceng.cn/webkf/PHP/201701/50528.htm