正则表达式是一种具有特定模式的用来匹配文本的字符串
preg_match 匹配
$pattern = '/php/';$subject = "php 是最好的编程语言,php 没有之一!";$result = preg_match($patte大闹清风寨rn,$subject);if($result){ echo "<h1>匹配成功</h1>";}el{ echo "<h1>匹配不成功</h1>";}
preg_match_all 匹配所有
$pattern = '/php/';$subject = "php是最好的编程语言,不会php的程序员不是好程序员!";$result = preg_match_all($pattern,$subject,$matches);var_dump($result);var_dump($matches);//preg_match===//int 1//array (size=1)// 0 => string 'php' (length=3)//preg_match_all ====//int 2//array (size=1)// 0 =>// array (size=2)// 0 => string 'php' (length=3)// 1 => string 'php' (length=3)
preg_replace 正则替换
preg_filter() 等价于 preg_replace() ,但它仅仅返回与目标匹配的结果
$pattern = '/www\..*\.com/';$replacement = 'www.test.com';$subject = [ 'www.baidu.com', 'www.google.com', 'coding.test.com'];$result = preg_replace($pattern,$replacement,$subject);var_dump($result);//array(3) {// [0] =>// string(12) "www.test.com"// [1] =>// string(12) "www.test.com"// [2] =>// string(15) "coding.test.com"//}$result1 = preg_filter($pattern,$replacement,$subject);var_dump($result1);//array(2) {// [0] =>// string(12) "www.test.com"// [1] =>// string(12) "www.test.com"//}
正则搜索并使用回调替换
$pattern = '/(.*)(\d{4})(-\d{2}-\d{2})/';$subject = "今天是2020-01-14";$result = preg_replace_callback($pattern,'nextyear',$subject);var_dump($result);function nextyear($vars){ return '明年的'.$vars[1].($vars[2]+1).$vars[3];//string(28) "明年的今天是2021-01-14"}//array (size=4)// 0 => string '今天是2020-01-14' (length=19)// 1 => string '今天是' (length=9)// 2 => string '2020' (length=4)// 3 => string '-01-14' (length=6)
preg_grep_invert 返回没有被匹配替换到的
$pattern = '/www\..*\.com/';$subject = [ 'www.baidu.com', 'www.google.com', 'coding.imooc.com'];$result = preg_grep($pattern,$subject,preg_grep_invert);var_dump($result);//string(16) "coding.imooc.com"
preg_split 按照指定规则分割字符串转数组
$pattern = '/\||,|\s/';$replacement = '|';$subject = "php|asp,jsp html";$result1 = preg_split($pattern,$subject,3);var_dump($result1);//array (size=4)// 0 => string 'php' (length=3)// 1 => string 'asp' (length=3)// 2 => string 'jsp' (length=3)// 3 => string 'html' (length=4)
转义正则表达式字符
$str = '<a href="http://www.test.com">测试网</a>';$result = preg_quote($str,'/');$pattern = '/'.$resu七年级英语工作总结lt.'/';$subject = '<a href="http://www.test.com">测试网</a>';echo preg_match($pattern,$subject);//\<a href\="http://www\.test\.com"\>测试网\</a\>
()单独获取
$pattern = '/[\da-z]+([\._\-]*[\da-z]+)*@[\da-z]+([\.\-][\da-z]+)*\.[a-z]+/i';$subject = <<<php //imooc123@qq.com //imooc.123@qq.com //imooc_123@qq123.com //imooc--123@qq.com //imooc123@qq.com.cn //imooc123@vip-qq.comphp;preg_match_all($pattern,$subject,$matches);var_dump($matches);//array(3) {// [0] =>//打印出所有匹配到的// array(6) {// [0] =>// string(15) "imooc123@qq.com"// [1] =>// string(16) "imooc.123@qq.com"// [2] =>// string(19) "imooc_123@qq123.com"// [3] =>// string(17) "imooc--123@qq.com"// [4] =>// string(18) "imooc123@qq.com.cn"// [5] =>// string(19) "imooc123@vip-qq.com"// }// [1] =>//打印出第一个()里的// array(6) {// [0] =>// string(0) ""// [1] =>// string(4) ".123"// [2] =>// string(4) "_123"// [3] =>// string(5) "--123"// [4] =>// string(0) ""// [5] =>// string(0) ""// }// [2] =>//打印出第二个()里的// array(6) {// [0] =>// string(0) ""// [1] =>// string(0) ""// [2] =>// string(0) ""// [3] =>// string(0) ""// [4] =>// string(4) ".com"// [5] =>// string(3) "-qq"// }//}
ajax注册表单案例
index.html
<!doctype html><html lang="en"><head> <meta http-equiv="content-type" content="text/html; chart=utf-8" /> <link rel="stylesheet" type="text/css" href="css/ba.css" /> <link rel="stylesheet" type="text/css" href="css/register.css" /> <title>用户注册表单验证</title> <script src="js/jquery.js"></script></head><body><div class="wrapper container"> <h2>用户注册</h2> <form onsubmit="return post(this)"> <p class="clearfix"> <label class="one">手机号码:</label> <input name="telphone" class="text" placeholder="请输入手机号" /> <label class="error">请输入正确的手机号</label> </p> <p class="clearfix"> <label class="one" >校验码:</label> <input name="code" class="code" type="text" placeholder="请输入手机6位校验码" /> <input class="get_code" type="button" value="获取验证码" /> <label class="error">请填写手机接收到的6位数校验码</label> </p> <p class="clearfix"> <label class="one">登录密码:</label> <input name="password" type="password" class="text" placeholder="请输入6-16位密码" /> <label class="error">密码在6-16个字符之间</label> </p> <p class="clearfix"> <label class="one">确认密码:</label> <input name="c_password" type="password" class="text" placeholder="请再次输入密码" /> <label class="error">确认密码和密码不一致</label> </p> <p class="clearfix"> <label class="one">姓名:</label> <input name="name" type="text" class="text" placeholder="请输入2-6位中文" /> <label class="error">请输入2-6位中文</label> </p> <p class="clearfix"> <label class="one">身份证:</label> <input name="idcard" type="text" class="text" placeholder="请输入18位二代身份证号码" /> <label class="error">请输入18位二代身份证号码</label> </p> <p class="clearfix"> <label cla桥梁工程师2ss="one">邮箱:</label> <input name="email" type="text" class="text" placeholder="请输入email邮箱" /> <label class="error">email邮箱不正确</label> </p> <p class="clearfix"><input class="submit" type="submit" value="立即注册"/></p> </form></div><script> function post(obj) { var postdata = $(obj).rialize(); $.post('php/check.php',{postdata:postdata},function (data) { if(data.code){ $("input[name="+data.sign+"]").siblings('.error').show(); }el{ location.href = 'ok.html'; } },'json'); return fal; }</script></body></html>
ok.html
<!doctype html><html lang="en"><head> <meta chart="utf-8"> <title>title</title></head><body> <h1>注册成功!</h1></body></html>
ba.css
/* css document */*{margin:0; padding:0;}a{text-decoration:none; cursor:pointer;}li{list-style:none;}img{border:none;}html,body{ font-size:16px; font-family:"微软雅黑"; overflow-x:hidden;}.wrapper{width:820px; margin:0 auto;}.left{float:left;}.right{float:right;}.clearfix:after{content:"."; display:block; clear:both; font-size:0; overflow:hidden; height:0;}.clearfix{zoom:1;}.red{color:#f93;}.mt{ margin-top:10px;}.m独立学院是什么意思r{ margin-right:10px;}.mb{ margin-bottom:10px;}.ml{ margin-left:10px;}/*----header-----*/.header{height:35px; line-height:35px; background:#5a84d1; color:#fff; font-size:14px;}.header a{color:#fff;}.weixin{position:relative; display:block; width:120px; height:38px; text-align:center;}.wx{display:inline-block; width:35px; height:35px; background:url(../img/weixinhui.png) no-repeat;}.wx:hover{background:url(../img/weixin.png) no-repeat;}.erweima{position:absolute; top:35px; left:0; display:block; width:120px; height:120px; border:1px solid #999; z-index:100;}.header .right #time{margin-left:20px;}.top{height:74px; width:1140px; margin:10px auto}/*-------logo-------*/.logo{height:74px; margin-right:15px;}.logo a{display:block;}.slogo{width:170px; height:60px; margin-top:10px; padding-left:10px; overflow:hidden; border-left:1px solid #ccc; font-size:20px;}/*-------nav-------*/.nav{float:right; height:30px; margin-top:30px; line-height:30px;}.nav li{怎样清心寡欲float:left; position:relative; width:115px; text-align:center;}.nav li a{font-size:20px; color:#3a3a3a;}.nav li:hover > a{color:#28a7e1}.nav li:hover > ul{visibility:visible; opacity:1; }.nav li a {text-decoration:none; display:inline-block; -webkit-transition:color 0.2s linear, background 0.2s linear; -moz-transition:color 0.2s linear, background 0.2s linear; -o-transition:color 0.2s linear, background 0.2s linear; transition:color 0.2s linear, background 0.2s linear; }.subnav {visibility:hidden; opacity:0; position:absolute; top:30px; left:0; z-index:100; width:115px; text-align:center; background:rgba(0,0,0,0.4); -webkit-transition:opacity 0.2s linear, visibility 0.2s linear; -moz-transition:opacity 0.2s linear, visibility 0.2s linear; -o-transition:opacity 0.2s linear, visibility 0.2s linear; transition:opacity 0.2s linear, visibility 0.2s linear; }.subnav li{clear:both; width:100%; border:0 none;}.subnav li a{display:inline-block; color:#fff;}.subnav li:hover > a{color:#80eef5;}/*-------footer-----*/.footer{background:#eee; padding-bottom:50px;}.footer a{color:#000;}.list1{margin:20px 15px 40px;}.list1 li{height:40px; line-height:40px;}.list1 a.first:hover{background:url(img/redicon.png) 0 6px no-repeat;}.list1 a.first{/*float:left;*/margin-right:23px; text-indent:15px; font-weight:bold; color:#111;}.sublist li{float:left;/**/ margin-right:11px;}.sublist li a{color:#111;}.par{text-align:center;}.par a{padding:0 10px;}.footer div.right{margin:20px 25px 40px 0; }/*kefu*/#sidekf{background:url(../img/222.png) no-repeat left bottom;width:225px; height:200px; position:fixed; _position:absolute; right:-139px;top:40px;_top:expression(documentelement.scrolltop+40);z-index:9;}#sidekf .lnk{ float:left;width:225px;}#sidekf .ovh{ float:right;width:35px; height:100px;}#sidekf a{display:block;width:128px; margin-left:97px;}.sidekf_qq1{height:33px; margin-top:35px;}.sidekf_qq2{height:36px; margin-top:3px;}.sidekf_qq3{height:36px; margin-top:3px;}
register.css
/* css document */.container{margin:5px auto; border:1px solid #d8d8d8; background: #f9f9f9; padding:50px; font-family:"微软雅黑"}.container h2{text-align:center; color:#333;}form{margin:20px 0 0 120px;}form p{margin-bottom:10px;}form a{ color:#ff7702;}h2{ line-height:60px; font-size:30px; color:#333;}label{display:block; float:left; height:48px; line-height:48px; color:#f00; text-indent:10px;}label.one{width:90px; height:48px; text-align:right; color:#333;}input{float:left;font-size:16px; font-family:"微软雅黑"; color:#666;}.text,.submit{border:1px solid #ccc; width:300px; height:46px; text-indent:10px;}.error{display: none;}.code{height:46px; width:180px; _line-height:46px; text-indent:10px;}.get_code{height:48px; width:110px; margin-left:10px; border:1px solid #ccc; cursor:pointer;}.agreement{margin-left:90px; height:30px; line-height:30px;font-size:12px;}.agreement input{display:block; line-height:30px; height:12px; margin:8px 8px 0 5px; border:none; width:12px; background:url(../img/checkbox.png) no-repeat; }.get_code{background:#337ab7; color:#fff;}.submit{margin-left:90px; background:#f93; font-size:20px; letter-spacing:4px; color:#fff; cursor:pointer;}p.last{margin-left:310px; font-size:16px;}p.last input{ cursor:pointer;}
check.php
<?phppar_str($_post['postdata'],$post);if(!preg_match('/^1\d{10}$/',$post['telphone'])){ echo json_encode(['code'=>1,'sign'=>'telphone']); return ;}if($post['code']!='123456'){ echo json_encode(['code'=>1,'sign'=>'code']); return ;}if(!preg_match('/^.{6,16}$/',$post['password'])){ echo json_encode(['code'=>1,'sign'=>'password']); return ;}if($post['c_password']!=$post['password']){ echo json_encode(['code'=>1,'sign'=>'c_password']); return ;}if(!preg_match('/^[\x80-\xff]{6,18}$/',$post['name'])){ echo json_encode(['code'=>1,'sign'=>'name']); return ;}if(!preg_match('/^\d{18}$/',$post['idcard'])){ echo json_encode(['code'=>1,'sign'=>'idcard']); return ;}if(!preg_match('/^[\da-z]+([\._\-]*[\da-z]+)*@[\da-z]+([\.\-][\da-z]+)*\.[a-z]+$/',$post['email'])){ echo json_encode(['code'=>1,'sign'=>'email']); return ;}//将合法数据写入数据库echo json_encode(['code'=>0]);//utf8编码下汉字unicode编码范围:\x80-\xff//array (size=1)//'postdata' => string 'telphone=111111&password=&c_password=&name=&idcard=&email=' (length=58)//array (size=6)// 'telphone' => string '111111' (length=6)// 'password' => string '' (length=0)// 'c_password' => string '' (length=0)// 'name' => string '' (length=0)// 'idcard' => string '' (length=0)// 'email' => string '' (length=0)
基础知识补充:
在线调试工具
/d/file/titlepic/pp“汉字”建议使用unicode编码再进行匹配br />在线转码工具:http://tool.chinaz.com/tools/unicode.aspx
不可见原子
自定义原子
通用字符类型作原子
元字符
元字符就是指那些在正则表达式中具有特殊意义的专用字符
边界限制符
量词
禁止贪婪
?
当该字符紧跟在任何一个其他限制符 (*, +, {n,}, {n,m})
后面时,匹配模式是非贪婪的。
u
模式修正符
模式单元
模式单元()的三个作用:
分组、限制多选结构、捕获文本
反向引用
反向引用:对模式单元中捕获的文本内容的引用
捕获的文本存储在临时缓冲区中,缓冲区编号范围为1-99,反向引用格式为:
\+编号
非捕获元字符 “ ?: ”
定界符
当使用正则函数的时候,模式需要由定界符闭合包裹。
分隔符可以使任意非字母数字、非反斜线、非空白字符。
经常使用的分隔符是正斜线(/)、hash符号(#) 以及取反符号(~)。
如果分隔符需要在模式内进行匹配,它必须使用反斜线进行转义
模式修正符
本文发布于:2023-04-08 02:58:50,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/2ff8b85a9c88d11b29a8acbde779eb62.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:PHP正则表达式及表单注册案例.doc
本文 PDF 下载地址:PHP正则表达式及表单注册案例.pdf
留言与评论(共有 0 条评论) |