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

鬼斧神工之正则表达式

壞大叔bbUncle PHP开发工程师
难度初级
时长 3小时12分
  • regexCheck.php <?php require_once 'regexTool.class.php'; $regex = new regexTool(); if(!$regex->noEmpty($_POST['username'])) exit('用户名是必须填写的!'); if(!$regex->isEmail($_POST['email'])) exit('email格式错误!'); if(!$regex->isMobile($_POST['mobile'])) exit('手机号格式错误!'); //数据库写入 /* * @name : show * @description : output debug * @param $var : input data * @return void */ 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>'; $func($var); echo '</pre>'; } else { //string,int,float... $func($var); } }
    查看全部
  • regexTool.class.php (3) //设置修正模式 public function setFixMode($fixMode) { $this->fixMode = $fixMode; } //用户名必须填写 public function noEmpty($str) { return $this->regex('require', $str); } //邮箱格式 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); } }
    查看全部
  • regexTool.class.php (2) private function regex($pattern, $subject) { //检测内置正则表达式中是否已经存在 //strlower()将字符转化为小写,防止意外错误 if(array_key_exists(strtolower($pattern), $this->validate)){ $pattern = $this->validate[$pattern].$this->fixMode; } //对返回的类型进行定义,如果返回的属性是真,则进行一个匹配,并且把结果放在定义的matches数组中,否则使用preg_match进行一个验证 $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; } }
    查看全部
  • regexTool.class.php (1) <?php 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|7|8)\d{9}$/', ); //定义返回的结果,false时只返回验证结果真还是假,如果为true返回数组 private $returnMatchResult = false; //修正模式默认为空 private $fixMode = null; //匹配的数组 private $matches = array(); //验证结果 private $isMatch = false; //定义一个构造函数,fixMode为修正参数 public function __construct($returnMatchResult = false, $fixMode = null) { $this->returnMatchResult = $returnMatchResult; $this->fixMode = $fixMode; }
    查看全部
  • perg_match($pattern,$subject) perg_match_all($pattern,$subject,array&$matches) perg_replace($pattern,$relacement.$subject) perg_filter($pattern.$replacement,$subject) preg_grep($pattenr,array$inpue) perg_split($pattern,$subject) perg_quote($str)
    查看全部
    0 采集 收起 来源:课程准备

    2018-03-22

  • 修正模式 默认 贪婪匹配:匹配结果存在歧义时取其长,默认匹配模式,添加在匹配模式的最后面,实例/0-9/ U 懒惰匹配,匹配结果存在歧义时取其短,实例/0-9/U i 忽略英文字母大小写,实例/aabb/i x 忽略空白,实例/aa bb/x s 让元字符"."匹配包括换行在内的所有字符
    查看全部
  • 1. 界定符:表示一个正则表达式的开始和结束 ,如 /0-9/ , #0-9# , {0-9} 2. 原子:正则表达式中的最小匹配单位,包括可见原子和不可见原子 可见原子:匹配\,\\ 不可见原子:空格,直接敲一个空格即可;tab制表符,\t;回车,\r 注意:中文匹配时,为了防止编码错误,最好将汉字转成unicode编码再匹配 3. 元字符: |匹配两个或者多个分支选择; []匹配方括号中的任意一个原子;[Dd]uang~ :匹配Duang~ 或者 duang~ [0-9a-zA-Z] [^ ]匹配方括号中的原子之外的任意字符 . 匹配除了换行符之外的任意字符 ,即[^\n] \d 匹配任意一个十进制数字,即[0-9] \D 匹配任意一个非十进制数字,即[^0-9] \s 匹配一个不可见原子,即[\f\n\r\t\v] \S 匹配一个可见原子,即[^\f\n\r\t\v] \w 匹配任意一个数字、字符、或者下划线,即[0-9a-zA-Z_] \W 匹配任意一个非数字、字母、或下划线,即[^0-9a-zA-Z_] 4. 量词 {n} 表示其前面的原子恰好出现了n次 , 如5{2}表示55 {n,} 表示其前面的原子最少出现了n次 {n,m} 表示其前面的原子最少出现n次,最多出现了m次 * 表示匹配0次、1次或者多次其之前的原子,即{0,} + 表示匹配1次或者多次其之前的原子,即{1,}, ? 匹配0次,或者1次其之前的原子,即{0,1} 5. 边界控制 ^ 匹配字符串开始的位置,注意前面不得有其他字符 $ 匹配字符串结尾的位置,注意后面不得有其他字符,如 ^Duang~$ () 匹配其中的整体为一个原子 ,如(D|d)uang~ 匹配Duang~ duang~
    查看全部
  • 正则表达式常用函数 $pattern = '/[0-9]/'; $subject = 'wdawdw3sdaef3f'; $replacement = 'rep'; $str1 = preg_match($pattern, $subject);//常用于表单验证等 $str2 = preg_match_all($pattern, $subject); $str3 = preg_replace($pattern, $replacement, $subject);//常用于非法词语、不和谐词语过滤 $str4 = preg_filter($pattern, $replacement, $subject); //只保留发生了替换的部分 $str5 = preg_grep($pattern, $subject);//将不符合匹配的过滤掉,只保留匹配的 $str6 = preg_split($pattern, $subject);//分割数组,类似explode函数 $str7 = preg_quote($str);//运算符转义
    查看全部
  • Hbuilder
    查看全部
  • Important!! 功能类的构造形式…
    查看全部
  • 匹配url地址: $pattern ='/^(https?:\/\/)?(\w+\.)+[a-zA-Z]+$/';
    查看全部
  • 1,手机格式验证: /^1(3|4|5|7|8)\d{9}$/ 或 /^1[34578]\d{9}$/
    查看全部
  • 常见的修正模式: U:惰性模式 i:忽略大小写 x:忽略空格 s:让元字符'.'匹配包括换行符在内的任意字符
    查看全部
    0 采集 收起 来源:修正模式

    2015-05-16

  • [Dd]ung~ Dung~|dung~ (D|d)ung~
    查看全部
  • {m}:表示其前面的原子恰好出现了n次 {n,}:表示其前面的原子最少出现了n次 {n,m}:表示其前面的原子最少出现n次,最多出现了m次 *:表示匹配0次、1次或者多次其之前的原子,即{0,} +:表示匹配1次或者多次其之前的原子,即{1,} ?:匹配0次,或者1次其之前的原子,即{0,1}
    查看全部

举报

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

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