php 正则 不包含某字符串的正则表达式

 更新时间:2009年09月07日 11:02:40   投稿:mdxy-dxy  
这篇文章主要介绍了判断一个字符串中是否含有另一字符串,php有很多方法

常见函数 strstr($str, “abc”);
正则匹配 preg_match(”/(abc)?/is”, $str);
但是要匹配一个字符串中,不包含某字符串,用正则就比较麻烦了
如果不用正则 !strstr($str, “abc”); 就可以解决问题了
但是用正则呢,就只有这样了,”/^((?!abc).)*$/is”
//------------------------------------------------

复制代码 代码如下:

<?php
$str = "dfadfadf765577abc55fd";
$pattern_url = "/^((?!abc).)*$/is";
if (preg_match($pattern_url, $str)){
echo "不含有abc!";
}else{
echo "含有abc!";
}
?>

//------------------------------------------------
结果为:false,含有abc!
$str = “2b3c4d5c”;
注意:[^(abc)] 这个语法是逐个检查$str中的字符是否不在 a b c中,
preg_match(”/[^(abc)]/s”, $str, $arr);
其中字符 2 就不在 a b c 中,所以$arr返回值为2;
同时匹配,包含字符串 “abc”,而且不包含字符串 “xyz”
“/(abc)[^((?!xyz).)*$]/s”

以下是补充:

判断一个字符串中是否含有另一字符串,有很多方法,如下:

1. 常见函数

strstr($str, "abc");

2. 正则匹配

preg_match("/(abc)/is", $str);

但是要匹配一个字符串中,不包含某字符串,用正则就比较麻烦了。
1. 如果不用正则如下就可以解决问题

!strstr($str, "abc");

2. 但是用正则呢,就只有这样了

preg_match("/^((?!abc).)*$/is", $str);

完整代码示例

复制代码 代码如下:

$str = "dfadfadf765577abc55fd";
$pattern_url = "/^((?!abc).)*$/is";
if (preg_match($pattern_url, $str))
{
echo "不含有abc!";
}
else
{
echo "含有abc!";
}

结果为:false,含有abc!

同时匹配,包含字符串 "abc",而且不包含字符串 "xyz"的正则表达式:

preg_match("/(abc)[^((?!xyz).)*$]/is", $str);

该方法有效,本人使用方法如下:

    (?:(?!<\/div>).|\n)*? //匹配不含</div>的一个字符串

但最终使用中结果是发现,该方法效率极其低下,在处理非常短文字(要匹配该正则式的相同部分的有十几个字,或者最多几十个)时间可以考虑使用,但当用于大篇幅文章解析或多处需要改种匹配时间应不使用,考虑用其他方法替代(如:先解析出要匹配该段正则式的文字,然后验证其中是否存在某段文字),正则表达式对于匹配不含特定字符串的文字段时并不是非常有效的方法.

相关文章

  • 正则表达式验证

    正则表达式验证

    正则表达式验证...
    2006-06-06
  • PHP中基于perl的正则表达式处理函数

    PHP中基于perl的正则表达式处理函数

    和正则表达式一样,正则表达式处理函数不能够独立使用,而这必须相结合,才能够完成特定的功能。我们只介绍以preg开头的基于perl的正则表达式。
    2015-10-10
  • 日常收集整理正则表达式验证大全

    日常收集整理正则表达式验证大全

    这篇文章主要介绍了日常收集整理正则表达式验证大全 的相关资料,需要的朋友可以参考下
    2016-03-03
  • 正则表达式教程之匹配单个字符详解

    正则表达式教程之匹配单个字符详解

    这篇文章主要介绍了正则表达式教程之匹配单个字符,结合实例形式分析了匹配单个字符的常用技巧与相关注意事项,需要的朋友可以参考下
    2017-01-01
  • 比较常用证件正则表达式验证大全

    比较常用证件正则表达式验证大全

    最近做项目,有项目需求需要对各种常用的证件进行验证。而港澳通行证,台湾通行证,护照这些证件,在网上没有搜到正则验证的方法,后来经过一番折腾,结合validator这个验证插件写了一些代码,在此分享给大家,需要的朋友可以参考下
    2015-10-10
  • js正则表达式中的问号几种用法小结

    js正则表达式中的问号几种用法小结

    这篇文章主要介绍了js正则表达式中的问号几种用法,比如+?,*?,{2,3}?可以停止匹配的贪婪模式,感兴趣的朋友可以参考下
    2014-09-09
  • 正则表达式匹配括号外的符号及数据

    正则表达式匹配括号外的符号及数据

    这篇文章主要介绍了正则表达式匹配括号外的符号及数据,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • 数据库中使用正则表达式小结

    数据库中使用正则表达式小结

    这篇文章主要介绍了数据库中使用正则表达式小结的相关资料,需要的朋友可以参考下
    2015-10-10
  • 正则表达式详解

    正则表达式详解

    许多程序设计语言都支持利用正则表达式进行字符串操作,正则表达式又称正则表示法、常规表示法,下面通过本篇文章给大家分享正则表示相关内容,有需要的朋友可以参考下
    2015-08-08
  • 用js实现过滤script的正则

    用js实现过滤script的正则

    今日研究discuz的代码,发现个不错的正则代码,基本上简单
    2008-05-05

最新评论