之前看到如何快速取得COOKIE名的时候,看到一个正则 /[^ =;]+(?=\=)/g,表示从来没接触到过这个语法,然后去翻了下资料,看到了零宽断言这个概念,真是拗口啊,完全联系不起来。

 

零宽断言:

用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像\b,^,$那样用于指定一个位置,这个位置应该满足一定的条件(即断言),因此它们也被称为零宽断言。最好还是拿例子来说明吧:
断言用来声明一个应该为真的事实。正则表达式中只有当断言为真时才会继续进行匹配。

 

概念比较拗口,还是来看个实例吧!

"aa=45;bb=67".match(/[^=;]+/g);        //'aa','45','bb','67'

然后我们在后面添加一个零宽断言,(?==)加了个条件,表示必须符合=左边的那个

"aa=45;bb=67".match(/[^=;]+(?==)/g);        //'aa','bb'

 

这样的话,取cookie名不是方便多了,然后向到用(?<=exp)方法来取cookie值,结果发现JS不支持

 

再然后用负向零宽断言(?!exp)测试了下(匹配后面跟的不是exp的对象),发现取出的有问题

"aa=45;bb=67".match(/[^=;]+(?!=)/g);        //'a','45','b','67'

 

求高人指点

 

posted on 2013-08-13 14:20  zarck  阅读(230)  评论(0编辑  收藏  举报