CooCooWakka : 正则表达式小参考

首页 :: 索引 :: 修订历史 :: 最新评论 :: CooCooWakkaGroup :: 登陆/注册 :: 你好, 38.103.63.62
你的足迹: » 正则表达式小参考
正则表达式的基本用法


摘自互联网

大家都知道,  正则表达式在处理字串方面,  大大的方便了许许多多的PHP程式设计师.  
但对于想学正则表达式的初学者而言,  多多少少有一些问题,  我想以下的解释或多或少都会有所帮助吧  :)  

通常上,  正则表达式会用到以下的几个"符号":  
^  -  代表字串前面一定要有这样的字,  如^http://,  代表前面一定要有http://  
$  -  代表字串后面一定要有这样的字.  
?  (一个问号)  -  它代表一个或没有字元  
*  (一个*)  -  它代表没有或者更多前面的字元  
.  (一个句点)  -  它代表任何一个字元  
+  (一个加)    -  它代表至少一个或更多前面的字元  
[xyz]  -  它代表任何一个字元,  或x,  或y,  或z  
[a-z]  -  它代表任何一个字元,  由a至z  
[[:alnum:]]  -  代表由a至z,  0至9  
[[:digit:]]  -  代表由0至9

当使用正则表达式时,  必需注意ereg及eregi可大大不同喔~  
ereg是非常敏感的  (意即大小字母都分得非常清楚),  而eregi则不是  (只要记着i代表case-insensitive就可以了)  

这里举一些例子:  
<?php
$regexp  =  eregi("a?c",  "abc");  //--  这是对的,  因?可以代表"一个"或没有字元  
$regexp  =  eregi("a?c",  "ac");  //--  这也是对的,  因?可以代表一个或"没有"字元  
$regexp  =  eregi("a?c",  "a");  //--  这样就不对了,  纵使有a,  可是还是要有c  
 
$regexp  =  eregi("[abc]",  "a");  //--  这是对的,  因a是大括号里的其中一个字元  
$regexp  =  eregi("[a-z]",  "c");  //--  这是对的,  因c包括在a至z里  
$regexp  =  eregi("[a-z]",  "0");  //--  这是不对的,  因0并不包括在a至z里面  
 
$regexp  =  eregi("a.c",  "abc");  //--  这是对的,  因一个.代表"任何"一个字  
$regexp  =  eregi("a.c",  "ac");  //--  这可就不对了,  因.代表"一个"字元,  所以放abbc也是不对的  
 
$regexp  =  eregi("a+c",  "aaaac");  //--  这是对的,  因+代表一人或"更多"前面的字元  
$regexp  =  eregi("a+c",  "abbc");  //--  这样是不对的,  +代表一个或更多"前面的字元",  而不是代表任何一个字元  
$regexp  =  eregi("a+c",  "abc");  //--  这样也是不对的,  注释如上  
 
$regexp  =  eregi("[^abc]",  "a");  //--  这是比较不同的一点,  那就是如果^出现在[]里面,  代表"除"了里面的字,  全部都是对的.  
$regexp  =  eregi("[^abc]",  "d");  //--  这是对的,  因d并不在abc里面  
$regexp  =  eregi("[^[:alnum:]]",  "9");  //--这是对的,  因~并不包括在a至z,  0至9里面  
当然,  [[:digit:]]用法也是相同:  
$regexp  =  eregi("[^[:digit:]]",  "a");  //--  这是对的,  因a并不包括在0至9里面  
?>

最后,  举个有用的例子,  
比如说,  我要每个人的密码都不准拥有0至9,  可以这样试验:  
<?php
$regexp  =  eregi("^[^0-9]+$",  "aaa9");  //--把aaa9当做密码  
if  ($regexp  ==  "")  {  
    echo  "密码拥有号码,  请改过";  
}  else  {  
    echo  "密码没有号码,  通过";  
}  
?>

测验显示,  密码拥有号码,  请改过.  

相信每个人都看到,  [^0-9]前后各有^及$,  这是为了确保前后不能拥有号码,  而+则确保中间没有任何的号码,  
[]里面的^,  则是"除了0至9之外,  其他一律通过"
所以只要将9拿去,  就会显示"密码没有号码,  通过了" !
当前页面没有留言.[显示留言板]

SourceForge.net Logo Creative Commons License
请享受共创成果的同时,尊重他人劳动。本站点内容如未特别声明,全部遵循 Creative Commons License by-nc-sa协议发布。