php写正则的诀窍和常用正则

写正则的诀窍

女孩和男孩恋爱时的诀窍通常是:测试你是不是对我好一点,如果是的,咱们的关系就更好一点。

而正则的诀窍和恋爱的诀窍基本一致:写一点、测一点。

因为,我们需要不断的正则,用preg_match对比是不是能匹配成功。成功了,再写后面的一点。直到写完,全部匹配成功为止!

例如,我要写一个邮箱的正则。我先要做的事情,将常用的邮箱格式全部列出来。例如:

phpcn@php.cn phpcn@corp.baidu.cm phpcn@126.com phpcn@xxx.com 12345@qq.com

常用的格式主要有这样一些。那我们就可以来分析:

    1.先匹配@之前的字符 \w+(因为是0-9A-Za-z_)

    2.第二个跟一个@符

    3.第三个再写上[a-zA-Z0-9-]+ 因为qq和126这些主域名是不能有下划线的

    4.corp.baidu. 或者是126. 通常邮箱后缀都是这样的。所以我们可以写成:([a-zA-Z0-9-]+.){1,2}

    5.上面的是将.转义,让它是本身的意思。括号重复的区间最少一次,最多两次。

    6.后面接下com|cn|org|gov.cn|net|edu.cn等就可以了

因此,我们的正则表达示在我使用:

/\w+@([a-zA-Z0-9-]+.){1,2}(com|cn|org|gov.cn|net|edu.cn)/

邮箱的正则就被我写成功了。

常用正则函数

我们常用的正则函数有:

函数名功能
preg_filter执行一个正则表达式搜索和替换
preg_grep返回匹配模式的数组条目
preg_match执行一个正则表达式匹配
preg_match_all执行一个全局正则表达式匹配
preg_replace_callback_array传入数组,执行一个正则表达式搜索和替换使用回调
preg_replace_callback执行一个正则表达式搜索并且使用一个回调进行替换
preg_replace执行一个正则表达式的搜索和替换
preg_split通过一个正则表达式分隔字符串

大家针对这这些函数,对着手册用一下。有问题或遇到问题可以来我们的官网提问。

正则关于面试常遇到的问题

面试中经常考到的几个正则达达示是:

    1.匹配邮箱

    2.匹配手机号

    3.匹配一个网址

    4.用正则匹配某个格式,取出某个例

    5写一个采集器
    其他....

面试的第4题和第5题我对大家不担心,因为只要大家认真学习了我给的前五节的内容。第4,5题推理就行。

因为,通常在技术答题面试环节,是时候准许查手机的!

常用正则表达示

下面的是快速查找的正则表达示,大家一定得知道具体意思。
需要的时候直接复制即可:

继续学习
||
<?php $pattern = '/(\w+)@(\w+).(com|org)/'; $str = "bob@example.com"; preg_match($pattern, $str, $match); print_r($match); ?>
提交重置代码
章节
笔记
提问
课件
反馈
捐赠

php入门教程之一周学会PHP

  • 推荐课程
  • 评论
  • 问答
  • 笔记
  • 课件下载
不聚不散~

不聚不散~

不是说了有常用的表达式吗

4年前    添加回复 1

回复
折印

折印

上面的邮箱正则 我写完后匹配 123123123@q_q.com也能成功

3年前    添加回复 0

回复
杜杜杜杜杜

杜杜杜杜杜

常用正则表达式遗漏了

3年前    添加回复 0

回复
cuofuphp

cuofuphp

快速查找的正则表达式呢?。。。。。

4年前    添加回复 0

回复
YuShine Wei

YuShine Wei

常用正则函数 我们常用的正则函数有: 函数名 功能 preg_filter 执行一个正则表达式搜索和替换 preg_grep 返回匹配模式的数组条目 preg_match 执行一个正则表达式匹配 preg_match_all 执行一个全局正则表达式匹配 preg_replace_callback_array 传入数组,执行一个正则表达式搜索和替换使用回调 preg_replace_callback 执行一个正则表达式搜索并且使用一个回调进行替换 preg_replace 执行一个正则表达式的搜索和替换 preg_split 通过一个正则表达式分隔字符串

1年前 0

城南花已开

城南花已开

<?php //网址匹配 $pattern='/\w+.{1,}/'; $string='//m.sbmmt.com/code/1162.html'; //$a=strlen($string); if(preg_match($pattern,$string,$match)){ echo '您输入的网址为:'; foreach($match as $value){ echo $value; } }else{ echo '您输入的网址有误'; } ?>

2年前 0

城南花已开

城南花已开

<?php //手机号匹配 $pattern='/\d+/'; $string='12345678901'; //$a=strlen($string); if(strlen($string)==11){ if(preg_match($pattern,$string,$match)){ echo '您输入的手机号为:'; foreach($match as $value){ echo $value; } } }else{ echo '您输入的手机号有误'; } ?>

2年前 0

城南花已开

城南花已开

<?php //邮箱匹配 $pattern='/\w+@\w+.{1,}/'; $string='khuufvdrt57756@php.com'; if(preg_match($pattern,$string,$match)){ echo '您输入的邮箱为:'; foreach($match as $value){ echo $value; } }else{ echo '您输入的邮箱有误'; } ?>

2年前 0

祈りの空

祈りの空

函数名 功能 preg_filter 执行一个正则表达式搜索和替换 preg_grep 返回匹配模式的数组条目 preg_match 执行一个正则表达式匹配 preg_match_all 执行一个全局正则表达式匹配 preg_replace_callback_array 传入数组,执行一个正则表达式搜索和替换使用回调 preg_replace_callback 执行一个正则表达式搜索并且使用一个回调进行替换 preg_replace 执行一个正则表达式的搜索和替换 preg_split 通过一个正则表达式分隔字符串

3年前 0

大白兔

大白兔

<?php //简单的判断手机号是否正确 $pattern = '/^1(\d)+\d/'; $str = "15563994222"; if(preg_match($pattern, $str, $match)){ echo '手机号正确'.'<br />'; }else{ echo '手机号格式不正确,请重新填写'; } print_r($match); ?>

3年前 0

phpcn_u1625

phpcn_u1625

正则表达式会出现在技术答题面试环节

4年前 0

课件暂不提供下载,工作人员正在整理中,后期请多关注该课程~