8个常用的正则表达式

本文是博主从tutsplus 看到 的一篇文章,对于新手入门来说,还是非常棒的博文,就整理一下。八张图带你入门正则表达式。
原博连接:https://code.tutsplus.com/tutorials/8-regular-expressions-you-should-know–net-6149
正则表达式基础语法实例详解:http://blog.csdn.net/shuai_wy/article/details/54340834
常用正则表达式: http://c.biancheng.net/cpp/html/1433.html
前四条都比较简单(若有问题,可以先去看一下基础语法),重点说一下后面的四个正则表达式,后面的正则中有我写的优化实例,都是我多次运行验证过的,大家可以参考。
note:一下的例子呐,都是以单个匹配为实例的,如果大家想要匹配出一段文本中的字段,注意请去除^(以什么开始) 和 $(以什么结束)

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-]+$/

Slug

5、匹配Email地址

/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/

Email

6、匹配URL

/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/

URL

实例:

<?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]?)$/

IP

8、HTML标签

/^<([a-z]+)([^<]+)*(?:>(.*)<\/\\1>|\s+\/>)$/

html

注意:
正则表达式,我直接使用了原博中提供的表达式。
如果你要匹配 一个html标签,比如: <hmtl>hello wys</html>,自然是没有问题,但是如果你要匹配一段文本中的html标签的话,则需要 去除 ^(已什么开始),$(以什么结束)。

$str = "<a href='www.baidu.com'>PHP</a>C#,精神病人思路广&nbsp <span></span>&nbsp &nbsp<a href=''/>&nbsp </br>&nbsp房天下<br>国际网组";   //例如匹配改字符串中的html标签
$reg = "/<([a-z]+)([^<]+)*(?:>(.*)<\/\\1>|\s+\/>)/";
$reg1 = "/<(\S*?)[^>]*>.*?<\/\\1>/";//此表达式也可

if (preg_match_all($reg,$str,$arr,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) "" //(.*)
  }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值