先来看一个例子:字符串: abc正则: .*(?=c)得到的匹配: ab(?=c)意思是后边紧跟着 c 这个字符串,但是匹配项不包括 c ,所以得到的匹配就是 ab 。
我的理解是与预查内如想符的匹配不作为整体返回结果返回.比如你的正则是这样 var oReg=/book(?=)/gi; var s="i have a lot of books,but i have a book only."; 用字符去匹配这这正则虽然只有book能够符合要求,但因为是预查内容是 不作为结果返回的,最后的返回结果是book
(?=pattern) 说明右面紧挨着pattern 如 var str = "abcad"; var reg = /a(?=b)/g; //这样将会查找字符a,取到后面紧临b的字符a,这样第一个a匹配, //之所以说不消耗字符是指 当开始匹配字符串的时候 当第一个字符a匹配的时候查验第二个字符是否为b,不管第二个字符是否为b,那么第二次匹配的时候从第二个字符匹配 var str = "abababababababa"; var reg = /aba/g; //这样首先得三个字符匹配成功,再次匹配的时候就要从第四个字符b开始
话说我第一次看这个的时候也不明白是什么意思...这手册的介绍太模糊了^^不耗费字符...
就是不站用字符...
举例说明...字符串
str = 'abc';/a(?=b)bc/.test(str); //true 因为(?=b)只确定了b前面那个位置...就是说它匹配位置...为不是字符...而/a(b)bc/.test(str); //false 因为(b)匹配了字符,而不是后面为b的那个位置....(b)换成(?:b),也是同样的效果...继续下潜....
var oReg=/book(?=)/gi;
var s="i have a lot of books,but i have a book only.";
用字符去匹配这这正则虽然只有book能够符合要求,但因为是预查内容是
不作为结果返回的,最后的返回结果是book
var str = "abcad";
var reg = /a(?=b)/g; //这样将会查找字符a,取到后面紧临b的字符a,这样第一个a匹配,
//之所以说不消耗字符是指 当开始匹配字符串的时候 当第一个字符a匹配的时候查验第二个字符是否为b,不管第二个字符是否为b,那么第二次匹配的时候从第二个字符匹配
var str = "abababababababa";
var reg = /aba/g; //这样首先得三个字符匹配成功,再次匹配的时候就要从第四个字符b开始
$str1="95959595";$pattern1='/95(?=95)/';preg_match_all($pattern1, $str1,$arr1);
var_dump($arr1);?>