﻿/*
 * JS正则表达式类
 * 例：
 * var str="<html><script type='text/javascript'>var a=10;</script><body><script type='text/javascript'>var b=10;</script><a href='javascript:;'/>aaaa< /a ><img src='abc.jpg' id='abcd' alt='abc你好' /><a href='index.php'>你好</a></body></html>";
 * var reg=new RegExps();
 * var s=reg.GetTag(str,'img');
 * alert(reg.GetAttrib(s[0],'alt'));
 * alert(reg.Is('.*',"b"));
 * var as=reg.Get(str,"<script type='text/javascript'>","</script>");
 * alert(reg.GetTagName(str,new Array('html','body','script'),0));
 * alert(reg.getElememtById(str,'abcd'));
 */
//JS正则表达式类====================//
/*    方法列表                     */
//=================================//
/*    GetTag(string,tag);          */
//=================================//
/*    GetTagName(str,new Array(),0)*/
//=================================//
/*    getElememtById(string,id);   */
//=================================//
/*    GetAttrib(string,Attrib);    */
//=================================//
/*    Get(string,start,end);       */
//=================================//
/*    GetText(string);             */
//=================================//
/*    ClsHtml(string);             */
//=================================//
/*    ClsScript(string);           */
//=================================//
/*    ClsCss(string);              */
//=================================//
/*    FindString(string,str);      */
//=================================//
/*    Is(str,string);              */
//=================================//

function RegExps(){
	this.GetTag=function(string,tag){
		if(tag.toLowerCase()=='img')
			var regexp=new RegExp("\<"+tag+"(.*?)\>","gi");
		else
			var  regexp=new RegExp("\<"+tag+"(.*?)\>(.*?)\<(.*?)\/"+tag+"(.*?)\>","gi");
		var tags= string.match(regexp);
		if(tags==null)
		  return new Array("");
		else
		  return tags;
	}
	this.GetTagName=function(string,name,id){
	    if(string==null || name==null)return false;
		var strings=new Array(string);
		if(typeof(name)=="object"){
		  for(var i=0;i<name.length;i++){
		     strings.length=0;
		     strings=this.GetTag(string,name[i]);
			 if(strings==null)return "";
			 string=strings[0];
		  }
		  if(id==null)
		    return strings;
		  else
		    return strings[id];
		}
		else{
		  strings=this.GetTag(string,name);
		  if(id==null)
		    return strings;
		  else
		    return strings[id];
		}
	}
	this.getElememtById=function(string,id){
	    if(id==null || string==null)return false;
		var regexp=new RegExp("(<([^>]*?) id=('| |\")"+id+"('| |\")(.*?)>)","gi");
		var strings=string.match(regexp);
		if(strings!=null){
		  var tagObject=strings[0];
		  regexp=new RegExp("[^< ]* ","gi");
          strings=strings[0].match(regexp);
		  if(strings==null)
		    return null;
		  else{
		    strings[0]=strings[0].replace(/^( |　)*/,'');
		    strings[0]=strings[0].replace(/( |　)*$/,'');
		    if(strings[0].toLowerCase()=='img'){
			  strings[0]=tagObject;
			}
			else{
		      regexp=new RegExp("(<([^>]*?) id=('| |\")"+id+"('| |\")(.*?)>(.*?)<(.*?)/"+strings[0]+"(.*?)>)","gi");
		      strings=string.match(regexp);
			}
			if(strings==null)
			  return null;
			else
			  return strings[0];
		  }
		}
	}
	this.GetAttrib=function(string,Attrib){
		var regexp=new RegExp(" "+Attrib+"=(.*?)( |\>|/\>)","gi");
		var Attribs=string.match(regexp);
		if(Attribs!=null){
			regexp=new RegExp("(^ "+Attrib+"=)","gi");
			Attribs[0]=Attribs[0].replace(regexp,'');
			Attribs[0]=Attribs[0].replace(/( |　|'|"| >|　>|'>|">| \/>|　\/>|'\/>|"\/>)*$/,'');
			Attribs[0]=Attribs[0].replace(/^( |　|'|")*/,'');
			return Attribs[0];
		}
	}
	this.Get=function(string,start,end){
	  	var regexp=new RegExp(start+"(.*?)"+end,"g");
        var strings=string.match(regexp);
		if(strings!=null){
		  for(var i=0;i<strings.length;i++){
		    var regexp2=new RegExp("(^"+start+"|"+end+"$)","g");
		    strings[i]=strings[i].replace(regexp2,'');
		  }
		  return strings;
		}
	}
	this.FindString=function(string,str){
	    if(id!=null)
		  var regexp=new RegExp("(.*?)"+str+"(.*?)","gi");
		else
		  var regexp=new RegExp("(.*?)"+str+"(.*?)");
		if(string.search(regexp)==0)
			return true;
		else
			return false;
	}
	this.Is=function(str,string){
		var regexp=new RegExp(str);
		return regexp.test(string);
	}
	this.GetText=function(string){
		string=this.ClsScript(string);
		string=this.ClsCss(string);
	    string=this.ClsHtml(string);
		return string;
	}
	this.ClsHtml=function(string){
		return string.replace(/(\<(.*?)\>)/gi,'');
	}
	this.ClsScript=function(string){
		return string.replace(/\<script (.*?)\>(.*?)\<(.*?)\/script(.*?)\>/gi,'');
	}
	this.ClsCss=function(string){
	    return string.replace(/\<style (.*?)\>(.*?)\<(.*?)\/style(.*?)\>/gi,'');
	}
}