当前位置:多学网学习教育电脑学习编程入门PHP教程半小时精通PHP正则表达式

半小时精通PHP正则表达式

[08-23 22:08:21]   来源:http://www.duoxue8.com  PHP教程   阅读:362
半小时精通PHP正则表达式,标签:PHP技巧,php培训,php学习,php安装,http://www.duoxue8.com
 
  如果我们希望在正则表达式中实现类似编程逻辑中的“或”运算,在多个不同的模式中任选一个进行匹配的话,可以使用管道符 “|”。例如:  
  /to|too|2/  
  上述正则表达式将会与目标对象中的 “to”, “too”, 或 “2” 相匹配。  
  正则表达式中还有一个较为常用的运算符,即否定符 “[^]”。与我们前文所介绍的定位符 “^” 不同,否定符 “[^]”规定目标对象中不能存在模式中所规定的字符串。例如:  
  /[^A-C]/  
  上述字符串将会与目标对象中除A,B,和C之外的任何字符相匹配。一般来说,当“^”出现在 “[]”内时就被视做否定运算符;而当“^”位于“[]”之外,或没有“[]”时,则应当被视做定位符。  
  最后,当用户需要在正则表达式的模式中加入元字符,并查找其匹配对象时,可以使用转义符“”。例如:  
  /Th*/  
  上述正则表达式将会与目标对象中的“Th*”而非“The”等相匹配。

3、使用实例  

      ①PHP中可以使用ereg()函数进行模式匹配操作。ereg()函数的使用格式如下:  
   ereg(pattern, string)  

  其中,pattern代表正则表达式的模式,而string则是执行查找替换操作的目标对象。同样是验证邮件地址,使用PHP编写的程序代码如下:  

 


 <?php  
   if (ereg(“^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+”,$email))  
    { echo “Your email address is correct!”;}  
   else  
    { echo “Please try again!”;}  
   ?>  



  ②javascript 1.2中带有一个功能强大的RegExp()对象,可以用来进行正则表达式的匹配操作。其中的test()方法可以检验目标对象中是否包含匹配模式,并相应的返回true或false。  

  我们可以使用javascript编写以下脚本,验证用户输入的邮件地址的有效性。  


 <html>  
   <head>  
    <script language="javascript1.2">  
     <!-- start hiding  
     function verifyAddress(obj)  
     {  
      var email = obj.email.value;  
      var pattern = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/;  
      flag = pattern.test(email);  
      if(flag)  
      {  
       alert(“Your email address is correct!”);  
       return true;  
      }  
      else  
       {  
        alert(“Please try again!”);  
        return false;  
        }  
      }  
     // stop hiding -->  
    </script>  
   </head>  
   <body>  
   <form onSubmit="return verifyAddress(this);">  
   <input name="email" type="text">  
   <input type="submit">  
   </form>  
  </body>  
 </html>



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



开篇,还是得说说 ^ 和 $ 他们是分别用来匹配字符串的开始和结束,以下分别举例说明:

"^The":开头一定要有"The"字符串;
"of despair$":结尾一定要有"of despair" 的字符串;

那么,
"^abc$":就是要求以abc开头和以abc结尾的字符串,实际上是只有abc匹配;
"notice":匹配包含notice的字符串;

你可以看见如果你没有用我们提到的两个字符(最后一个例子),就是说模式(正则表达式)可以出现在被检验字符串的任何地方,你没有把他锁定到两边。



接着,说说 '*' '+' 和 '?'
他们用来表示一个字符可以出现的次数或者顺序,他们分别表示:
"zero or more"相当于{0,}
"one or more"相当于{1,}
"zero or one."相当于{0,1}

这里是一些例子:

"ab*":和ab{0,}同义,匹配以a开头,后面可以接0个或者N个b组成的字符串("a", "ab", "abbb", 等);
"ab+":和ab{1,}同义,同上条一样,但最少要有一个b存在 ("ab" "abbb"等);
"ab?":和ab{0,1}同义,可以没有或者只有一个b;
"a?b+$":匹配以一个或者0个a再加上一个以上的b结尾的字符串。

要点:'*' '+' 和 '?' 只管它前面那个字符。



你也可以在大括号里面限制字符出现的个数,比如:

"ab{2}": 要求a后面一定要跟两个b(一个也不能少)("abb");
"ab{2,}": 要求a后面一定要有两个或者两个以上b(如"abb" "abbbb" 等);
"ab{3,5}": 要求a后面可以有2-5个b("abbb", "abbbb", or "abbbbb")。



现在我们把一定几个字符放到小括号里,比如:

"a(bc)*": 匹配 a 后面跟0个或者一个"bc";
"a(bc){1,5}": 一个到5个 "bc";



还有一个字符 '|',相当于OR操作:

"hi|hello": 匹配含有"hi" 或者 "hello" 的 字符串;
"(b|cd)ef": 匹配含有 "bef" 或者 "cdef"的字符串;
"(a|b)*c": 匹配含有这样多个(包括0个)a或b,后面跟一个c的字符串;

上一页  [1] [2] [3]  下一页


半小时精通PHP正则表达式 结束。
Tag:PHP教程PHP技巧,php培训,php学习,php安装电脑学习 - 编程入门 - PHP教程
半小时精通PHP正则表达式相关文章