好像网上介绍JS正则库的文章不多,可能也是因为复杂的正则匹配很少需要在客户端运行,所以JS上用的不多,并且我搜JS的正则库还真没找到第二个,囧。但它的一些特性挺实用,有兴趣的同学可以看看。由于没花太多时间去琢磨,所以本文只将该库作简要介绍,本文用例全部来自它的API文档。
XRegExp是一个为JS的正则表达式提供扩展功能的库, 调用之后可以弥补原生JS在正则方面的一些不足,也在很大程度上增强了JS正则的功能。它解决了浏览器之间正则的兼容问题,且支持原生ES6正则语法(有关ES6中正则的新特性:参考?New regular expression features in ECMAscript 6)
XRegExp的压缩版大概4.25K,在性能上,由于XRegExp生成的正则都是原生的正则对象,其表现跟原生正则一样, 只是在首次创建XRegExp正则的时候需要多点开销。它的主要特点如下:
扩展的正则语法,包括支持命名的捕获组以及更强大的文本替换
增加修饰符(flags)支持单行模式;忽略空格以及行注释;明确捕获组模式;支持21位Unicode匹配
提供一套函数简化正则处理
解决跨浏览器的正则兼容问题
在此基础上提供扩展(addons)支持更多的正则语法和功能
XRegExp的最主要的API也就是这个构造函数 其语法如下:
pattern参数为字符型的正则表达式
[flags]为可选的正则修饰符,当然也是字符型,它支持原生的修饰符以及XRegExp中的扩展修饰符(特性中已列出)
返回值为被扩展的正则对象。
比如:
以上这个栗子?就体现了XRegExp在正则上强大的扩展功能,比如命名的捕获组,正则注释等,这从一定程度上弥补了原生JS正则上的不足。
由于我并没有看完它的所有API文档, 也是刚接触这玩意,所以这里只挑几个我觉得比较实用的特性列举。
它的语法格式为
str 被匹配的字符串
regex 传入的正则
-
回调函数,该方法每次迭代将传入回调函数4个参数
当前匹配的数组,并且带命名的后向引用属性
当前匹配的索引位置
正在被遍历的字符串
正在使用的正则对象
该方法遍历被匹配的字符串,忽略其中正则全局修饰符,也忽略的初始值。
该方法无返回值。
例如:
匹配链方法可以从之前的匹配结果中调用下一个正则继续匹配,就像从一个大范围中使用不同的正则不断筛选出你要的数据。
它的语法是
str 被匹配字符串
一个正则组成的数组,比如[reg1,reg2,...]
该方法返回与匹配链条(正则数组)最后一个正则的匹配内容,或一个空数组。
例如:
该方法可以将需要匹配的字符串或者正则表达式合并为一个正则表达式,带后部引用的正则在合并时将被重新编码,其语法格式为
patterns为一个数组,数组元素可以是要匹配的字符串或正则
可选的修饰符flags
返回值为合并后的正则表达式。
例如: