2014-03-19 W.Y.
本文讨论何时以及如何使用正则表达式全局匹配(/g),以及使用全局匹配可能会遇到的一些坑。 什么是全局匹配 有时候你可能期望重复匹配目标字符串多次,那么你就会创建一个全局匹配的正则表达式(通过正则表达式字面量 /.../g 或创建 new RegExp(..., 'g') 对象),这样正则表达式的 global 属性将会是 true,并且会导致一些行为的不同,下面会具体介绍。 javascript var regex = /x/g; regex.global // true 全局的正则表达式的另一个属性 lastIndex 表示上一次匹配文本之后的第一个字符的位置,上次匹配的结果是由方法 RegExp.prototyp 继续阅读 »
2017-02-27 zzyhappyzzy
一直感觉正则表达式很神奇,非常强大,但并没有系统学习过,今天抽空过一遍,希望能够彻底掌握它 more 简介 正则表达式在处理文本信息时非常有用,不限于代码、日志文件、文档等。在开始学习正则之前,需要有这种概念:任何文本都是由单个字符组成。 继续阅读 »
2016-02-05 ruki
New features Add automaticlly check libc interfaces Support custom allocator Add trace for allocator in the debug mode Add static_pool module Add stream interfaces for reading all data to string Add adler32 hash algorithm Add tb_memmem interface Add regex module with pcre, pcre2 or posix regex Changes Optimize stre 继续阅读 »
2015-08-01 Lim Geng
分组 非捕获分组 在正则表达式中遇到小括号就可以认为是一个分组,比如/(a)bcda\1/,(a)就是一个分组,\1代表第一个分组。这种分组可以成为 捕获分组。 var reg = /(a)bcd\1/ console.log(reg.test('abcdef')) // false console.log(reg.test('abcdaef')) // true \1是个占位符,意思是这里的内容匹配的和第一个分组的一样,比如/(xyz)bcd\1/实际上就等同于/(xyz)bcdxyz/, 与其相对的就是非捕获分组,比如/(?:a)bcda/,(?:a)就是非捕获分组,不能通过\1引用 var reg = /(?:a 继续阅读 »
2016-02-05 ruki
新特性 自动检测所有系统libc接口,优先使用系统版本 支持自定义内存分配器,并且能够在debug模式下,获取每次分配的代码位置信息,用于自定义追踪 增加轻量级static_pool来维护整块buffer的内存分配,适合局部管理部分内存,pool虽然也能维护,但是底层基于large_pool,比较重量级,适合全局管理内存 增加stream快速读取全部数据到string的接口 增加adler32 hash算法 增加tb_memmem接口 采用pcre/pcre2/posix regex实现正则表达式库 改进 优化stream,支持对字符设备文件的读写 修改tb_init接口,增加allocator自定义内存分配器参数,实现用户的侵 继续阅读 »