js学习小计5-零宽断言
2013-08-13 14:20
218 查看
之前看到如何快速取得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'
求高人指点
零宽断言:
用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像\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'
求高人指点
相关文章推荐
- JS不支持正则中的负向零宽断言
- 正则表达式学习2 - 零宽断言
- js正则学习小计
- 【js学习小计】
- js学习小计2-事件对象
- js学习小计1-onbeforeunload
- js正则:零宽断言
- 正则表达式学习记录-零宽断言
- js正则之零宽断言
- 正则表达式学习记录-负向零宽断言
- js正则表达式中关于零宽断言的奇异现象
- JAVASCRIPT 正则表达式学习-->基础与零宽断言(转自司徒正美)
- node.js学习之断言assert的使用示例
- js学习小计6-慎用return false;
- php学习第四章:正则表达式(四)匹配规则:分组、环视(零宽断言和负向零宽断言)
- js学习小计3-基本类型和引用类型
- 正则表达式学习3-负向零宽断言
- js学习小计4- break,continue的标识符
- 复习+学习js
- 迷你MVVM框架 avalonjs 学习教程22、avalon性能大揭密