Object.extend=function(props){ //继承父类 var prototype=Object.create(this.prototype) //初始化函数ctor var _Class=function(){ if (this.ctor) this.ctor.apply(this, arguments); } //当前类属性和方法 for(var k in props){ prototype[k]= props[k] } _Class.prototype = prototype; //类继承 _Class.extend=this.extend; //类扩展 _Class.expand = function (prop) { for (var name in prop) { prototype[name] = prop[name]; } }; return _Class } var AutoStr=Object.extend({ str:"", data:null,//开始位置和结束位置 lendata:null, length:1, ctor:function(str){ var the=this the.data=[] the.lendata=[] the.str=str str.replace(/\[(.*?)\]/g,function(m,item){ var itemarr=[] var itemlen=0 item.replace(/(.)-(.)/g,function(m,p1,p2){ itemarr.push(p1.charCodeAt(0)) itemarr.push(p2.charCodeAt(0)) itemlen=itemlen+p2.charCodeAt(0)-p1.charCodeAt(0)+1 }) the.data.push(itemarr) the.lendata.push(itemlen) }) //记录长度 var len=1 for(var i=0;i<the.lendata.length;i++){ len=len*the.lendata[i] } the.length=len }, eq:function(n){ var back=this._sync(n,this.lendata,this.length) var strArr=this.getStrArr(back) var num=-1 var str=this.str.replace(/\[.*?\]/g,function(){ num=num+1 return String.fromCharCode(strArr[num]) }) return str }, //多进制转换 demo:把16转成110 _sync:function(n,arr,len){ var back=[] for(var i=0;i<arr.length;i++){ len=len/arr[i] back.push(parseInt(n/len)) n=n%len } return back }, //获取返回的字符 getStrArr:function(back){ var arr=[] for(var i=0;i<this.data.length;i++){ arr.push(this.getM(this.data[i],back[i])) } return arr }, //获取区间范围 getM:function(arr,n){ for(var i=0;i<arr.length;i=i+2){ var len=arr[i+1]-arr[i]+1 if(n>=len){ n=n-len }else{ return arr[i]+n } } } }) var d=new AutoStr("http://www.baidu.com/[1-2A-Z][0-2].html") console.log(d.length) for(var i=0;i< d.length;i++){ console.log(d.eq(i)) }
可以生成中文、英文、数字字典,暴力破解密码,暴力爬虫
时间: 2024-11-06 03:52:44