开篇还是得说说 ^ 和 $ 他们是分别用来匹配串开始和结束以下分别举例介绍说明:
"^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{|}~]+$"
如果能方便读懂那这篇文章目就达到了
最新评论