«
正则表达式使用详解(2)

时间:2008-5-31    作者:Deri    分类: 分享


   <p>  在对正则表达式有了较为全面的了解之后,我们就来看一下如何在Perl,PHP,以及JavaScript中使用正则表达式。</p><p>  通常,Perl中正则表达式的使用格式如下:</p><p>  operator / regular-expression / string-to-replace / modifiers</p><p>  运算符一项可以是m或s,分别代表匹配运算和替换运算。</p><p>  其中,正则表达式一项是将要进行匹配或替换操作的模式,可以由任意字符,元字符,或定位符等组成。替换字符串一项是使用s运算符时,对查找到的模式匹配对象进行替换的字符串。最后的参数项用来控制不同的匹配或替换方式。例如:</p><p>  s/geed/good/</p><p>  将会在目标对象中查找第一个出现的geed字串,并将其替换为good。如果我们希望在目标对象的全局范围内执行多次查找―替换操作的话,可以使用参数 “g”,即s/love/lust/g。</p><p>  此外,如果我们不需要限制匹配的大小写形式的话,可以使用参数 “i ”。例如,</p><p>  m/JewEL/i</p><p>  上述正则表达式将会与目标对象中的jewel,Jewel,或JEWEL相匹配。</p><p>  在Perl中,使用专门的运算符“=~”指定正则表达式的匹配对象。例如:</p><p>  $flag =~ s/abc/ABC/</p><p>  上述正则表达式将会把变量$flag中的字串abc替换为ABC。</p><p>  下面,我们就在Perl程序中加入正则表达式,验证用户邮件地址格式的有效性。代码如下:</p><p>  <code>#!/usr/bin/perl<br />  
    # get input<br />  
    print “What's your email address? ”;<br />  
    $email = <><br />  
    chomp($email);<br />  
    # match and display result<br />  
    if($email =~ /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/)<br />  
    {<br />  
    print(“Your email address is correct! ”);<br />  
    }<br />  
    else<br />   
    {<br />    
    print(“Please try again! ”);<br />   
    }</code></p><p>  正则表达式使用详解</p><p>  如果用户更偏爱PHP的话,可以使用ereg()函数进行模式匹配操作。ereg()函数的使用格式如下:</p><p>  ereg(pattern, string)</p><p>  其中,pattern代表正则表达式的模式,而string则是执行查找替换操作的目标对象。同样是验证邮件地址,使用PHP编写的程序代码如下:</p><p>  <code><?php<br />   
    if (ereg(“^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+”,$email))<br />    
    { echo “Your email address is correct!”;}<br />   
    else<br />    
    { echo “Please try again!”;}<br />   
    ?></code></p><p>  最后,我们在来看一下JavaScript。JavaScript 1.2中带有一个功能强大的RegExp()对象,可以用来进行正则表达式的匹配操作。其中的test()方法可以检验目标对象中是否包含匹配模式,并相应的返回true或false。</p><p>  我们可以使用JavaScript编写以下脚本,验证用户输入的邮件地址的有效性。</p><p>  <code><html><br />          <head><br />           < language="Javascript1.2"><br />            <!-- start hiding<br />     
    function verifyAddress(obj)<br />     
    {<br />      
    var email = obj.email.value;<br />      
    var pattern = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/;<br />      
    flag = pattern.test(email);<br />      
    if(flag)<br />      
    {<br />       
    alert(“Your email address is correct!”);<br />       
    return true;<br />      
    }<br />      
    else<br />       
    {<br />        
    alert(“Please try again!”);<br />        
    return false;<br />        
    }<br />      
    }<br />     
    // stop hiding --><br />           </script><br />           </head><br />          <body><br />          <form onSubmit="return verifyAddress(this);"><br />           <input name="email" type="text"><br />           <input type="submit" value="提交"><br />           </form><br />          </body><br />         </html></code></p>