首先,正则表达式的"非",代表不想匹配某个字符。

比如字符串 helloword123 /[^0-9]+/g 可以匹配非数字,即匹配结果为 helloword

同样的, /[^he]+/g 可以匹配非h非e的字符,匹配结果为 lloword123

那么 /[^hello]/g 呢?乍一看可能会以为能匹配word123,其实不然,[^] 内的多个字符是"或"的关系存在的,即它们并不是一个整体, /[^hello]/g 表示 非h非e非l非o,并不能理解为 非(hello),所以匹配结果是 w 和 rd123。

道理我们都懂,可我们就是想匹配非某个字符串呢?比如某一字符串若是含有hello则无匹配,若是不含hello则匹配,写成[^hello]是显然不行的,[^(hello)] 呢?其实不起作用。

这时我们需要用到正则表达式的断言—— (?!pattern) 零宽负向先行断言 或者 (?<!pattern) 零宽负向后行断言 均可。

这里只介绍一种写法,大家可以都去尝试一下。

/^((?!hello).)+$/

由于断言 (?!hello)是不占位的,后跟的 . 在原位置匹配任意字符,再用括号将其括起来,用+重复一次或多次,前后加上^和$,若是字符串中存在hello,则匹配到h字符之前的时候,断言(?!hello)匹配失败,正则匹配结果为false, 若是字符串中不存在hello,则匹配结果是整个字符串。

1. 匹配 & ; 之间不含有 test 的字符

str = "hello&nbsp;&test1;test&qout;";

正则表达式:/ &((?!test).)+;/g

匹配结果: &nbsp; 和 &qout;

2.匹配不含有 <img> 标签的 <div></div> 标签

str = "<div id='1'><img class='xx'></div><div id='1'><input type=''text"></div>";

正则表达式: / <div[^>]*>((?!<img[^>]*>).)+</div> /g

匹配结果: <div id='1'><input type=''text"></div>

常见函数 strstr($str, “abc”); 正则 匹配 preg_match(”/(abc)?/is”, $str); 但是要 匹配 一个 字符串 中,不包含某 字符串 ,用 正则 就比较麻烦了 如果不用 正则 !strstr($str, “abc”); 就可以解决问题了 但是用 正则 呢,就只有这样了,”/^((?!abc).)*$/is” //———————————————— 代码如下: $str = “dfadfadf765577abc55fd”; $pattern_url = “/^((?!abc).)*$/is”; if (preg_match($pattern_u http://t.zoukankan.com/zongfa-p-14818734.html 正则表达式 中,如果想要不 匹配 某个字符可以使用如下 表示 匹配 除了a以外的所有字符 表示 匹配 除了a、b、c以外的所有字符,注意这里不是abc 字符串 ,而是a、b、c任何一个字符都不 匹配 当我们要不 匹配 某个 字符串 或者中文词组的时候,可以这样用 这个表示 匹配 出'天空'之外的所有字符 事实上,说 正则表达式 里不支持逆向 匹配 并不是百分之百的正确。就像这个问题,我们就可以使用否定式查找来模拟出逆向 匹配 。每个空字符都会检查其前面的 字符串 (?:pattern) 获取 匹配 匹配 pattern但不获取 匹配 结果,不进行存储供以后使用。这在使用或字符“(|)”来组合一个模式的各个部分是很有用。例如“industr(?:y|ies)”就是一个比“industry|industries”更简略的表达式。 (?=pattern) 获取 匹配 ,正向肯定预查,在任何 匹配 pattern的 字符串 开始处 匹配 查找 字符串 ,该 匹配 不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能 匹配 “Windows2000”中的“Windows”,但. 今天我的同事老赵@jeffz_cn问我,有没有办法用 正则表达式匹配 “不包含某个 字符串 ”的文本,正好,我在写作的《 正则表达式 傻瓜书》中也提到了这类问题,就把这一节放出来,给大家参考,也希望大家多提建议(尤其是配图方面)。 正则表达式 的与或 我们都知道,写 正则表达式 有点像搭积木,复杂的功能总可以拆分开来,由不同的元素(也就是子表达式)对应,再用合适的关系将它们组合起来,就可以完成。在这... 1. 正则表达式 简介 正则表达式 (Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。 正则表达式 使用单个 字符串 来描述、 匹配 一系列 匹配 某个句法规则的...... 经常我们会遇到想找出不包含某个 字符串 的文本,程序员最容易想到的是在 正则表达式 里使用,^(hede)来过滤”hede”字串,但这种写法是错误的。我们可以这样写:[^hede],但这样的 正则表达式 完全是另外一个意思,它的意思是 字符串 里不能包含‘h',‘e',‘d'三个但字符。 我们使用 正则表达式 ,熟练掌握各种功能和结构只是手段,解决实际的问题才是真正的目的。要解决真正的问题,就必须有解决问题的思路, 正则表达式 的功能,说到底,可以归纳为三种逻辑,为了表述方便,我们分别称为与、或、 。\\ 逻辑关系\ \ \ 说明\ \ \ 与\... 首先, 正则表达式 的" ",代表不想 匹配 某个字符。比如 字符串 helloword123,/[^0-9]+/g可以 匹配 数字,即 匹配 结果为 helloword;同样的,/[^he]+/g可... 正则 是用来 匹配 字符的,它一个重要用途就是搜索。说到搜索,很容易就想到搜索引擎,比如Google。Google本身有一些简单搜索技巧甚是有用。比如,实现集合运算功能:与、或、 。本文尝试用 正则 来模拟一下。