一、正则表达式中的“原子”
1、a-z A-Z _ 0-9 //最常见的字符
2、(abc) (akd) //用圆括号包含起来的单元集合
3、[abcs] [^abd] //用方活号包含的原子表,原子表中的^代表排除或相反内容
4、转义字符
\d //包含所有数字[0-9]
\B //除所有数字年[^0-9]
\w //包含所有英文字符[a-zA-Z]
\W //除所有英文字符外[^a-zA-Z]
\s //包含空白区域如回车、换行、分页等[\f\n\r]
/i (忽略大小写)
/g (全文查找出现的所有匹配字符)
/m (多行查找)
/gi(全文查找、忽略大小写)
/ig(全文查找、忽略大小写)
......
小例 子:
$mode = "/(sd)/";
$str = "a;dfjs;ldfjsdlsdfkjsdfwefsdfasdgfsdf";
if (preg_match($mode, $str, $arr)) {
echo "匹配成功" . $arr[0];
}
else {
echo "匹配失败";
}
二、正则表达式元字符
* 匹配前一个内容的0次1次或多次
. 匹配内容的0次1次或多次,但不包含回车换行
+ 匹配前一个内容的1次或多次
? 匹配前一个内容的0次或1次
| 先择匹配类似PHP中的|(因为这个老实巴交算符是弱类型导致前面为整体匹配)
^ 匹配字符串首部内容
$ 匹配字符串尾部内容
\b 匹配单词边界,边界可以是空格或者特殊符合
\B 匹配除带单词边界意外内容
{m} 匹配前一个内容的重复次数为m次
{m,} 匹配前一个内容的重复次数大于等于m次
{m,n} 匹配前一个内容的重复次数m次到n次
() 合并整体匹配,并放入内存,可使用\1\2...依次获取
三、运算顺序
依然遵循从左到右的运算规则
优先级:
1、() 圆括号因为是内存处理所以最高
2、* ? + {} 重复匹配内容其次
3、^ $ \b 边界处理第三
4、| 条件处理第四
5、最后按照运算顺序计算匹配
四、匹配特殊字符
$frmvObj->add_rule("empName","r1(reg[".base64_encode("[^@#\$%\^&\*]+$")."])",array("姓名不能包含特殊字符!"),"请填写姓名");