看实例学正则表达式 (二)

2014-11-24 10:58:03 · 作者: · 浏览: 1
说: "以至少一个规范字符(除.意外)开头,后面跟着0个或者多个以点开始的字符串."

简单化一点, 我们可以用eregi()取代ereg().eregi()对大小写不敏感, 我们就不需要指定两个范围"a-z" 和"A-Z" – 只需要指定一个就可以了:

^[_a-z0-9-]+(.[_a-z0-9-]+)*$

后面的服务器名字也是一样,但要去掉下划线:

^[a-z0-9-]+(.[a-z0-9-]+)*$

Done. 现在只需要用”@”把两部分连接:

^[_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("[ ]+", ",", trim($str));