核心代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<script> var s1 = 'acritan' ; var s2 = 'bassarisk' ; var s3 = 'commotive' ; //找出不包含 "abba" 模式的单词 var r = /^(?!.*?(.)(.)\2\1)/i; alert(r.test(s1)); // true alert(r.test(s2)); // false alert(r.test(s3)); // false </script> |
零宽断言(?!exp)
反先行断言
什么是反先行断言,使用 (?!exp
) 匹配后面跟的不是exp。
php实例:
主要是想通过实例给大家说下这个正则的作用
1
2
3
4
5
6
7
8
9
10
11
|
$str = "abcgwcab" ; $parent = '/bc(?!ww)gw/' ; $str =preg_match( $parent , $str , $match ); var_dump( $str ); var_dump( $match ); /** 输出: int 1 array (size=1) 0 => string 'bcgw' (length=4) */ |
解析:首先判断字符串是否包含bc,然后判断其后面不是ww,最后匹配gw。可以看出反向断言之前后之后,能够在添加其他匹配条件。
.*?
这个.*就是匹配非空字符任意长度,?就是非贪婪模式就是匹配最少的字符例如一个字符