为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
鬼斧神工之正则表达式_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

鬼斧神工之正则表达式

壞大叔bbUncle PHP开发工程师
难度初级
时长 3小时12分
  • 用户注册
    查看全部
  • //包含开发的工具类 require_once 'regexTool.class.php'; //通过一些代码来调试这个类,看是否有语法错误 $regex = new regexTool();//定义一个对象实例化这个regexTool $regex->setFixMode('U');//定义一个修正模式(懒惰) $r = $regex->isEmail('asdfgewr@qq.com');//测试是否是正确的Email地址 show($r); //这是一个数据输出调试用的函数 function show($var = null,$isdump = false){ $func = $isdump ? 'var_dump' : 'print_r'; if(empty($var)){ echo 'null'; }elseif(is_array($var)||is_object($var)){ //array,object echo '<pre>'; print_r($var); echo '</pre>'; }else{ //string,int,float... echo $var; } }
    查看全部
  • //定义一些在函数外部调用的数据验证的方法 public function noEmpty($str){//验证数据是否为空,返回结果由regex函数来确定。$validate里已经有检测非空的正则表达式require,直接传递进去。 //return $this->regex($pattern,$subject); return $this->regex('require',$str); } //验证Email是否正确的方法 public function isEmail($email){ return $this->regex('email',$email); } //验证手机号是否正确的方法 public function isMobile($mobile){ return $this->regex('mobile',$mobile); } //定义一个用户自定义正则表达式的验证方法 public function check($pattern,$subject){ return $this->regex($pattern,$subject); }
    查看全部
  • private function regex($pattern,$subject){ if(array_key_exists(strtolower($pattern), $this->validate)){ $pattern = $this->validate[$pattern].$this->fixMode;} $this->returnMatchResult ? preg_match_all($pattern,$subject,$this->$matches) : $this->isMatch = preg_match($pattern,$subject) === 1; return $this->getRegexResult();} private function getRegexResult(){ if($this->returnMatchResult){ return $this->matches; }else{return $this->isMatch;}} public function toggleReturnType($bool = null){ if(empty($bool)){ $this->returnMatchResult = !$this->returnMatchResult;}else{ $this->returnMatchResult = is_bool($bool) ? $bool : (bool)$bool;}} public function setFixMode($fixMode){$this->fixMode = $fixMode;}
    查看全部
  • //定义一个构造函数(这样在实例化这个对象的时候,可以定义这个对象返回的是哪种类型并且给它定义一个修正模式。) public function __construct($returnMatchResult = false,$fixMode = null){ //把这2个参数赋值给这个类的私有成员 $this->returnMatchResult = $returnMatchResult; $this->fixMode = $fixMode;
    查看全部
  • 工具栏开发--成员属性 class regexTool{ //定义一个私有成员,用来存放一些常用的正则表达式 private $validate = array{ 'require' => '/.+/', 'email' => '/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/', 'url' => '/^http(s?):\/\/(?:[A-za-z0-9-]+\.)+[A-za-z]{2,4}(?:[\/\?#][\/=\?%\-&~`@[\]\':+!\.#\w]*)?$/', 'currency' => '/^\d+(\.\d+)?$/', 'number' => '/^\d+$/', 'zip' => '/^\d{6}$/', 'integer' => '/^[-\+]?\d+$/', 'double' => '/^[-\+]?\d+(\.\d+)?$/', 'english' => '/[A-Za-z]+$/', 'qq' => '/^\d{5,11}$/', 'mobile' => '/^1(3|4|5|6|7|8)\d{9}$/', }; //再定义一个私有成员,作用是定义它返回的结果,到底是让它返回是否匹配,还是把匹配到的结果全部返回到用户端。 //也就是说当这个变量$returnMatchResult,这个成员属性为false的时候,只返回验证的结果是真还是假。如果值为true,返回去的是匹配到的结果的数组。 private $returnMatchResult = false; //再定义一个成员变量用来存放修正模式,默认为空 private $fixMode = null; //再定义2个成员变量,第1个是匹配的结果数组,第2个为验证的结果,验证成功返回true,验证失败返回false。 private $matches = array(); private $isMatch = false;
    查看全部
  • URL匹配: 1、http是否出现,是http还是https。即^(https?://)?。 2、是否是二级域名? 即:(\w+\.)+。 3、顶级域名。即:[a-zA-Z]+。 故:正则表达式:^(https?://)?(\w+\.)+[a-zA-Z]+$
    查看全部
  • 【email地址】=>@前是字母数字或下划线,连续出现的次数一次到无限大次,也可能会有点出现多次 ==>/^\w+(\.\w+)*@\w+(\.\w+)+$/ email地址匹配: ^\w+(\.\w+)*@\w+(\.\w+)+$ 。 1、@前面可能会有.ad的形式,用模式单元(\w+)至少出现0次。 匹配邮箱 ^\w+(\.\w+)*@\w+(\.\w+)+$ ^\w表示必须以大小写字母或下划线开头 (\.\w+)*表示 .xxx在@前的邮箱名中可以出现0~无限次 0次的情形:kjrb@homeway.com.cn 2次的情形:musi.ca.l@public.net \w+表示@后面必须出现1~无穷次字母或下划线 第二个(\.\w+)+表示 域名的原理同第一个(\.\w+)+ 但是多了一个+表示至少有一次.xxx(至少是顶级域名结尾) 最后$也控制了必须以.xxx的域名结尾的往事
    查看全部
  • 【手机号匹配】=>11位数字==>/1[34578]\d{10}/ 或者 模式单元方/1(3|4|5|7|8)\d{10}/ ===>防止手机号错误 手机号匹配: 11位:\d{11} 第一位为1 : 1\d{10} 第二位为3/5/8/4/7 :1[34578]\d{9}或者模式单元法:1(3|4|5|7|8)\d{9}
    查看全部
  • 【浮点数匹配保留两位小数】=>数字连续出现一次到无限大次后面跟上小数点,最后再跟上两位数字==>/\d+\.\d{2}$/===>用于货币 保留n位小数的数字: \d+\.\d{n}$ ($边界控制后面没有) \d+.\d{2}[^0-9] 用来匹配2位浮点数,加了条件限制,应该更具使用价值
    查看全部
  • 在书写正则表达式的时候,需要先把匹配的需求转化成用正则表达式的口头语言描述,然后再转化成真正应该写的正则表达式。 匹配需求==>正则语言===>正则表达式====>作用 【非空匹配】==>原子连续出现的次数为一次到无限大次(口头语言)===> .+ ====> 提醒必填 1、非空:原子(无论可见原子或是不可见原子)出现的次数为一次到无穷大次。也就是:.+
    查看全部
  • 正则表达式的实战应用
    查看全部
    0 采集 收起 来源:实战内容概述

    2015-09-22

  • $pattern = '/i Mo Oc.+123/Uix';//加上x,通过x这个修正模式PHP会让这个正则表达式忽略它当中的空白符(空格还有Tab制表符) //匹配结果有多种可能(imooc__123,imooc__11213123,...),这个时候正则表达式在目标字符串上产生了歧义。 //匹配的结果存在很多种可能性,到底取哪种作为输出结果呢?这时需要给正则表达式指定一个修正模式来告诉PHP我们想要哪种结果。默认采用的是贪婪模式(选择匹配结果最长的那个)。 $subject = 'I love imooc__123123123123123123'; $matches = array(); preg_match($pattern,$subject,$matches); show($matches);
    查看全部
    0 采集 收起 来源:忽略空白符

    2015-09-22

  • //$pattern = '/iMoOc.+123/i';//修正模式:忽略英文字母大小写。 $pattern = '/iMoOc.+123/Ui';//两种模式同时写,表示懒惰模式和忽略大小写 //匹配结果有多种可能(imooc__123,imooc__11213123,...),这个时候正则表达式在目标字符串上产生了歧义。 //匹配的结果存在很多种可能性,到底取哪种作为输出结果呢?这时需要给正则表达式指定一个修正模式来告诉PHP我们想要哪种结果。默认采用的是贪婪模式(选择匹配结果最长的那个)。 $subject = 'I love imooc__123123123123123123'; $matches = array(); preg_match($pattern,$subject,$matches); show($matches);
    查看全部
    0 采集 收起 来源:忽略大小写

    2015-09-22

  • 常见的修正模式 U/u - 懒惰匹配/贪婪匹配 i - 忽略英文字母大小写 x - 忽略空白 s - 让元字符“.”匹配包括换行符在内的所有字符 e - 彩蛋,后面课程再讲解
    查看全部
    0 采集 收起 来源:忽略大小写

    2015-09-22

举报

0/150
提交
取消
课程须知
学习本课程之前需要掌握基本的PHP语法,基本的OOP思想,基本的MVC模式知识。
老师告诉你能学到什么?
在本课程中可以充分理解正则表达式的定义并掌握如何在实际开发中应用正则表达式。其中包含表单验证实际应用以及简易版模板引擎的实现。
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!