1.校验11位手机号码:
/^1[3456789]\d{9}$/
2.校验二代身份证号码:
/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/
3.校验电子邮箱:
/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/
4.校验2位小数:
/^\d+(\.\d{1,2})?$/
5.校验URL:
/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i
6.校验日期格式:
!/Invalid|NaN/.test(new Date(value).toString())
三、贪婪匹配与惰性匹配
1、贪婪匹配:就是匹配尽可能多的字符。
比如,正则表达式中m.*n,它将匹配最长以m开始,n结尾的字符串。如果用它来搜索manmpndegenc的话,它将匹配到的字符串是manmpndegen而非man。可以这样想,当匹配到m的时候,它将从后面往前匹配字符n。
2、懒惰匹配:就是匹配尽可能少的字符。
有的时候,我们需要并不是去贪婪匹配,而是尽可能少的去匹配。这时候,就需要将其转为惰性匹配。怎样将一个贪婪匹配转为惰性匹配呢?只需要在其后面添加一个”?”即可。如m.*?n将匹配manmpndegenc,匹配到的字符串是man。
四、PHP常用正则相关函数
1、preg_match
该函数是进行正则表达式的匹配,成功返回1,否则返回0
2、preg_match_all
该函数用于执行一个全局正则表达式匹配,与preg_match不同的是,该函数是匹配所有符合条件内容。
3、preg_replace
该函数执行一个正则表达式的搜索和替换。
五、PHP示例
1、匹配手机号码
<?php$str = '13141081058';$re = preg_match('/^1[3456789]\d{9}$/s',$str,$arr);print_r($re);print_r($arr);
输出结果:
1
Array ( [0] => 13141081058 )
2、匹配E-mail
<?php$str = 'wafu7969@qq.com';$re = preg_match('/^(.+)@(.+)\.(.+)$/s',$str,$arr);print_r($re);print_r($arr);
输出结果:
1
Array ( [0] => wafu7969@qq.com [1] => wafu7969 [2] => qq [3] => com )
3、URL 中取出域名
<?php$str = 'http://www.baidu.com/?search=强哥';$re = preg_match('/^(http:\/\/|https:\/\/)(.+)\//s',$str,$arr);print_r($re);print_r($arr[0]);
输出结果:
1
http://www.baidu.com/
4、查找匹配 <b> 与 </b> 标签的内容
单个p标签:
<?php$str = '<p>我是强哥</p>';$re = preg_match('/^<p>(.*)<\/p>/s',$str,$arr);print_r($re);print_r($arr[1]);
输出结果:
1
我是强哥
多个p标签:
<?php$str = '<p>我是强哥</p><p>你是谁呢?</p>';$re = preg_match_all('/<p>(.*?)<\/p>/m',$str,$arr);print_r($re);print_r($arr[1]);
输出结果:
2
Array
(
[0] => 我是强哥
[1] => 你是谁呢?
)
注意:这里要用惰性匹配,注意(.*?)里面的?。
5、提取图片的地址
<?php$str = '<img src="http://www.baidu.com/meinv.jpg" />';$re = preg_match('/<img src="(.*)" \/>/s',$str,$arr);print_r($re);print_r($arr[1]);
输出结果:
1
http://www.baidu.com/meinv.jpg
5、正则替换
把<p></p>中的“我是强哥”替换成“我是谁”
<?php$str = '<p>我是强哥</p>';$str = preg_replace('/^(<p>)(.*)(<\/p>)$/s','\1我是谁\3',$str);print_r($str);
这里用到了反向引用,使用反向引用的时候一定要注意:在使用反向匹配的时候都需要使用(),反向匹配时,匹配()里面出现的字符或字符串。