标签归档:php

正则表达式不匹配某个字符串

      最近项目中要用到一个正则表达式,排除某个字符串,我们知道排除单个字符串的话,可以用[^abc],这样就可以排除a或者b或者c了,但是要排除abc呢?

     网上找了下,都不太好用,自己写了个,php下测试可用,如匹配非.php这个字符,那么正则表达式就是:

    \.[^p]{1}[^h]{1}[^p]{1}

    php测试代码为:

  1. <?php 
  2. $subject = "neeao.gif"
  3. $pattern = '/\.[^p]{1}[^h]{1}[^p]{1}/'
  4. preg_match($pattern$subject$matches); 
  5. print_r($matches); 
  6. ?>  

   返回结果为:

   Array ( [0] => .gif )

   说明匹配成功了,其它语言的都大同小异。

   上面提到的只适合单个匹配的情况,没有考虑多个字符串的情况,评论中有朋友提出了另外一种方法,又测试了下,发现另外一种可以使用的方法:

(?!php|gif).{3}

不匹配php和gif,且字符串长度为3的字符串,测试之:

  1. <?php 
  2. $subject = "neeao.php.gif.ljk"
  3. $pattern = '/\.(?!php|gif).{3}/is'
  4. preg_match($pattern$subject$matches); 
  5. print_r($matches); 
  6. ?>  

结果:Array ( [0] => .ljk ),成功匹配。