8个常用的正则表达式
本文是博主从tutsplus 看到 的一篇文章,对于新手入门来说,还是非常棒的博文,就整理一下。八张图带你入门正则表达式。 1、匹配用户名/^[a-z0-9_-]{3,16}$/
2、匹配密码/^[a-z0-9_-]{6,18}$/
3、匹配十六进制/^#?([a-f0-9]{6}|[a-f0-9]{3})$/
4、匹配Slug我也不知道,这是个啥,比较简单,匹配了小写字母、数字、和连接符 /^[a-z0-9-]+$/
5、匹配Email地址/^([a-z0-9_.-]+)@([da-z.-]+).([a-z.]{2,6})$/
6、匹配URL/^(https?://)?([da-z.-]+).([a-z.]{2,6})([/w .-]*)*/?$/
实例: <?php $str = "http://www.fang.com/ask/search.html?Title=regex&author=wys"; $reg = "/^(https?://)?([da-z.-]+).([a-z.]{2,6})([/w.-]*)(?w*=.*)?/"; //优化以后的正则,功能更加强大。 if (preg_match_all($reg,$str,$arr,2)) { echo "<pre>"; var_dump($arr); echo "</pre>"; }
运行结果: array(1) {
[0]=>
array(6) {
[0]=>
string(59) "http://www.baidu.com/ask/search.html?Title=regex&author=wys"
[1]=>
string(7) "http://" //https?匹配协议
[2]=>
string(9) "www.baidu" // ([da-z.-]+) 匹配网址
[3]=>
string(3) "com" //匹配顶级域名 ([a-z.]{2,6})
[4]=>
string(16) "/ask/search.html" //匹配路径 ([/w.-]*)
[5]=>
string(23) "?Title=regex&author=wys" // 匹配参数 (?w*=.*)?
}
7、匹配IP地址/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/
8、HTML标签/^<([a-z]+)([^<]+)*(?:>(.*)</1>|s+/>)$/
注意: $str = "<a href='www.baidu.com'>PHP</a>C#,精神病人思路广  <span></span>   <a href=''/>  </br> 房天下<br>国际网组"; //例如匹配改字符串中的html标签
$reg = "/<([a-z]+)([^<]+)*(?:>(.*)</1>|s+/>)/";
$reg1 = "/<(S*?)[^>]*>.*?</1>/";//此表达式也可
if (preg_match_all($reg,2)){
echo "<pre>";
var_dump($arr);
echo "</pre>";
}
运行结果(讲解): <pre>
array(2) {
[0]=>
array(4) {
[0]=>
string(31) "<a href='www.baidu.com'>PHP</a>" //表达式完整匹配结果
[1]=>
string(1) "a" // [a-z]+ 匹配了标签名
[2]=>
string(21) " href='www.baidu.com'" // ([^<]+)* 匹配了多个标签属性
[3]=>
string(3) "PHP" //(.*) 匹配了标签内容,(?:>(.*)</1>|s+/>)中,?: 取消了子模式,故外层的匹配未显示,对应的匹配内容应为: >PHP</a>
}
[1]=>
array(4) {
[0]=>
string(13) "<span></span>"
[1]=>
string(4) "span" // [a-z]+
[2]=>
string(0) "" // ([^<]+)*
[3]=>
string(0) "" //(.*)
}
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |