<?php
/* 元字符:用来修饰原子,不能单独出现
* :用来修饰前面的原子出现的次数为0、1或多次;
+ :用来修饰前面的原子出现的次数为1次或多次;
? :用来修饰前面的原子出现的次数为0、1次;
{2} :用来修饰前面的原子出现的次数为2次,且必须是连续的;
{2,5}:用来修饰前面的原子出现的次数为2-5次之间,且包含2和5;
{2,}:用来修饰前面的原子出现的次数为大于等于2次;
{,4}:这种用法是错误的,不支持这样用
| :匹配两边的原子任意一个是否出现,由于|的优先级比较低,所以两边可以放字符串不加括号
^和\A:修饰前面的原子是否位于字符串开头,必须放在正则表达式的最前面
$和\Z:修饰前面的原子是否位于字符串结尾,必须放在正则表达式的最后面
\b:匹配单词边界
\B:匹配非单词边界
()的作用:1.改变优先级
2.将小原子变成大原子
3.子模式:每个小括号都是一个独立的子模式
4.反引用:取前面子模式中所匹配上的原子;
在子模式括号中使用?:则可以取消引用;
*/
$str="ai2@!244*&6779999&%8%8$$#$##";
//匹配9出现的次数是否介于1到4之间
$pat="/9{1,4}/";
if(preg_match($pat,$str,$arr)){
echo "正则表达式<b>$pat</b>和字符串<b>$str</b>匹配成功!<br>";
print_r($arr);
echo "<br>";
}
else{
echo "匹配不成功!<br>";
}
$str="ai2@24 is 4*&67abc7999is 9&%8% is8$$#$##";
//匹配3和#其中的一个是否有出现过,注意别忘了特殊字符要加转义符号
$pat="/3|#/";
//匹配ad和abc其中的一个是否有出现过
$pat1="/ad|abc/";
//匹配字符串是否以ai开头以##结尾
$pat2="/^ai.*##$/";
//匹配字符串中有单词边界的字符
$pat3="/\bis\b/";
if(preg_match($pat3,$str,$arr)){
echo "正则表达式<b>$pat3</b>和字符串<b>$str</b>匹配成功!<br>";
print_r($arr);
echo "<br>";
}
else{
echo "匹配不成功!<br>";
}
$str='this apad 2017-07-21 ivngix http://www.abc.def.com.cn isapache wapacheeb';
//改变优先级:不加括号匹配两边的整体原子,加上括号,只匹配括号中的
$pat="/apa(che|div)ngix/";
//小原子变大原子:不加括号只匹配*号之前的原子,加上括号后匹配括号整体出现的次数
$pat1="/(apa)*/";
//子模式:每一个小括号都是一个单独的子模式
$pat2="/(http|ftp|https|telnet)\:\/\/(www|ftp|mail)(.*)?\.(com|cn|net|org)/";
//反向引用:用\1取出子模式(\-|\/)的原子,此处\1的1指的是属于正则中的第几个子模式就用相应的数字来表示引用
$pat3="/\d{4}(\-|\/)\d{2}\\1\d{2}/";
if(preg_match($pat3,$str,$arr)){
echo "正则表达式<b>$pat3</b>和字符串<b>$str</b>匹配成功!<br>";
print_r($arr);
echo "<br>";
}
else{
echo "匹配不成功!<br>";
}
?>
原文链接:https://blog.csdn.net/living_ren/article/details/75669800
本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。
还没有人抢沙发呢~