常用PHP正则表达式

来源:互联网 发布:雀巢咖啡好处坏处知乎 编辑:程序博客网 时间:2024/05/22 02:18

正则表达式一直以来是我比较头痛的东西,不过工作中是离不开正则表达式的,代码、vim编辑器、awk等Linux命令都广泛应用正则表达式。这是我收集并且测试过的PHP代码中常用的正则表达式,首先建立测试函数:

1function regTest($pattern, $str) {
2    var_dump( preg_match($pattern,$str) );
3    preg_match_all($pattern,$str,$matches);
4    var_dump($matches );
5    var_dump( preg_replace($pattern,$str,'Test') );
6}
1. 匹配中文字符
1$pattern = "/[\x{4e00}-\x{9fa5}]/u";
2$str = "飞晏-feiyan";
3regTest( $pattern,$str );
4//依次输出结果
5//int(1)
6//array(1) { [0]=> array(2) { [0]=> string(3) "飞" [1]=> string(3) "晏" } }
7//string(28) "TestTest-feiyan"

关于汉字的匹配,网上很多给的都是“[\u4e00-\u9fa5]”,这个正则不一定完全正确。

2. 匹配tab缩进、空格和换行
1$pattern = "/[\n\s*\r]/";
2//依次包含一个或多个空格、换行和tab
3$str = "Hello \n,   PHP";
4regTest( $pattern,$str );
5//依次输出结果
6//int(1)
7//array(1) { [0]=> array(3) { [0]=> string(1) " " [1]=> string(1) " " [2]=> string(1) " " } }
8//string(21) "HelloTestTest,TestPHP"
3. 匹配Email地址
01$pattern = "[\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*]";
02$str = '如有问题,请联系service@lenovo.com或者contact@ibm.com。';
03regTest( $pattern,$str );
04//依次输出结果
05//int(1)
06//array(4) { [0]=> array(2) { [0]=> string(18) "service@lenovo.com" [1]=> string(15) "contact@ibm.com" } [1]=> array(2) { [0]=> string(0) "" [1]=> string(0) "" } [2]=> array(2) { [0]=> string(0) "" [1]=> string(0) "" } [3]=> array(2) { [0]=> string(0) "" [1]=> string(0) "" } }
07//string(41) "如有问题,请联系Test或者Test。"
08    
09//使用Filter函数
10filter_var($email, FILTER_VALIDATE_EMAIL);

我一般不自己写正则表达式去验证邮箱,使用PHP内置filter函数可以很方便的完成邮箱地址的验证。

4. 匹配国内手机号码和电话号码
1//固定电话匹配
2$pattern = "[\d{3,4}-\d{7,8}]";
3$str = '联系电话010-12345678';
4regTest( $pattern,$str );
5    
6//最简单的匹配手机号匹配
7$pattern = "[1\d{10}]";
8$str = '联系电话15812345678';
9regTest( $pattern,$str );
5. 匹配HTML中的图片地址
1$pattern = '/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.jpg]))[\'|\"].*?[\/]?>/';
2$str = '<img id="test_img" src="images/123.gif" alt="test" />';
3regTest( $pattern,$str );
原创粉丝点击