精通正则表达式:php半小时精通正则表达式

想必很多人都对正则表达式都头疼今天我以我认识加上网上些文章希望用常人都可以理解表达方式来和大家分享学习经验

开篇还是得说说 ^ 和 $ 他们是分别用来匹配开始和结束以下分别举例介绍说明:
"^The":开头定要有"The"串;
"of despair$":结尾定要有"of despair" 串;
那么
"^abc$":就是要求以abc开头和以abc结尾实际上是只有abc匹配;
"notice":匹配包含notice串;
你可以看见如果你没有用我们提到两个(最后个例子)就是说模式(正则表达式)可以出现在被检验任何地方你没有把他锁定到两边

接着说说 '*' '+' 和 '?'
他们用来表示可以出现次数或者顺序他们分别表示:
"zero or more"相当于{0,}
"one or more"相当于{1,}
"zero or _disibledevent=>正则表达式
个完整email地址中有 3个部分:
1. 用户名 (在 '@' 左边切)
2.'@'
3. 服务器名(就是剩下那部分)
用户名可以含有大小写字母阿拉伯数字句号('.')减号('-')and下划线'_')服务器名字也是符合这个规则当然下划线除外
现在用户名开始和结束都不能是句点服务器也是这样还有你不能有两个连续句点他们的间至少存在好现在我们来看下如何为用户名写个匹配模式:
^[_a-zA-Z0-9-]+$
现在还不能允许句号存在我们把它加上:
^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*$
上面意思就是说:以至少个规范标准(除了.)开头后面跟着0个或者多个以点开始
简单化 我们可以用eregi取代ereg、eregi对大小写不敏感 我们就不需要指定两个范围 "a-z" 和 "A-Z"只需要指定个就可以了:
^[_a-z0-9-]+(\.[_a-z0-9-]+)*$
后面服务器名字也是但要去掉下划线:
^[a-z0-9-]+(\.[a-z0-9-]+)*$
现在只需要用”@”把两部分连接:
^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$

这就是完整email认证匹配模式了只需要:
eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$",$eamil)
就可以得到是否为email了

正则表达式其他使用方法
提取
ereg and eregi个特性是允许用户通过正则表达式去提取部分(具体使用方法你可以阅读手册)比如说我们想从 path/URL 提取文件名下面代码就是你需要:
ereg("([^\\/]*)$", $pathOrUrl, $regs);
echo $regs[1];
高级代换
ereg_replace 和 eregi_replace也是非常有用假如我们想把所有间隔负号都替换成逗号:
ereg_replace("[ \n\r\t]+", ",", trim($str));
最后我把另串检查EMAIL正则表达式让看文章你来分析下:
"^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.'@'.'[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$"
如果能方便读懂那这篇文章就达到了
Tags:  php正则表达式 精通正则表达式pdf 精通正则表达式chm 精通正则表达式

延伸阅读

最新评论

发表评论