js正则捕获组

今天,发现我用得这个博客系统分页有问题。。翻页的时候banner的头像出不来。。。

给的页面是http://myway.sinaapp.com/page/2 这样 实际上http://myway.sinaapp.com/2 这样也能访问而且这样头图就出来了。。

其实是相对路径有问题。我看了一下源码也没找到分页在哪里修改,就想算了js正则把页面链接的page干掉。。就顺手写了个正则

/page/([0-9]+)/g 这个正则 没什么问题

但是我在用的时候是类似于这样

var s = "myway.sinaapp.com/page/123/".replace(/page/([0-9]+)/g,RegExp.$1);

运行之后发现结果不对。。打印RegExp.$1值发现不是我想要的页码数字,翻了一下《javascript高级程序设计》 第二版 92页发现这样一句话RegExp 有$1-$9个捕获组,在调用exec() 和test方法的时候会自动填充对应的捕获组。 猛一看我以为replace方法不填充这个捕获组,就把代码改为

var s = "myway.sinaapp.com/page/123/".replace(/page/([0-9]+)/g,function(a,b){return b;});

然后我就在琢磨这个RegExp的默认捕获组到底是怎么填充的 写了如下代码就一目了然了

var s = "ww2345.ww.com";
		 /([0-9]+)/.test(s);
		console.log(RegExp.$1);
		s=s.replace(/([w]+)/g,RegExp.$1);
		console.log(s);
		console.log(RegExp.$1);
点击 这里查看结果

总结一下:RegExp.$1 ~RegExp.$9 这些构造函数的捕获组在运行exec() test() 以及replace方法的时候会自动填充,但是你只能在运行完这个方法之后才能获得这个内容, 否则你获取的就是上次正则表达式运行的时候的填充的内容。这里算是一个小坑。。。自己注意一下就可以了。

本文标题:js正则捕获组
本文链接:https://56way.com/p/12.html
作者授权:除特别说明外,本文由 无路 原创编译并授权 小无路 刊载发布。
版权声明:本文不使用任何协议授权,您可以任何形式自由转载或使用。

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。