自己写了一个正则命名分组,参考了nginx的配置文件语法,让js正则使用更方便。
/*!
* replace2正则扩展方法
* Date: 2016-12-13T19:56Z
*/
void function(){
String.prototype.replace2=function(xreg,callback){
var regstr=xreg.toString();
var regn=[0];
regstr=regstr.replace(/\$([a-z\d\_]+)\=/ig,function(a,b){
regn.push(b);
return ;
});
var r;
regstr.replace(/^\/(.+?)\/([ig]+)$/g,function(a,b,c){
r=new RegExp(b,c);
});
return this.replace(r,function(){
var res={};
var a=arguments;
for(var i=1;i<=9;i++)
if(a[i]===0)break;
else if(typeof regn[i] === undefined);
else res[regn[i]]=a[i];
if(typeof callback===function) return callback(res);
return callback.replace(/\$([a-z\d]+)/ig,function(a,b){
return res[b];
});
});
};
}();
// 回调式
console.log(apple: 12; banana: 13;.replace2(/($name=[a-z]+)\:\s*($count=\d+)/g,function(x){
return x.name+=>+x.count;
}));
// 字符串式
console.log(apple: 12; banana: 13;.replace2(/($name=[a-z]+)\:\s*($count=\d+)/g,$name=>$count));
相关文档
随便看看
畅言模块加载中