function UnvoidRegExp(options) {
	var _FILTERS = {
	// Tipos de datos
		alfa 		: new RegExp(/^[^\[\]{}¦ÿ#$%\*\+:;<=>¿\?@~æÆø£Ø®¬½¼!¡«»©¢¥¤ßµ±¾¶§÷¹³²0-9]+$/),
	    num 		: new RegExp(/^[0-9]+$/),
		alfanum 	: new RegExp(/^[^\[\]{}¦ÿ#$%\*\+:;<=>¿\?@~æÆø£Ø®¬½¼!¡«»©¢¥¤ßµ±¾¶§÷¹³²]+$/),	
		unsignedint : new RegExp(/^\d+$/),
		signedint   : new RegExp(/^(\+|-)?\d+$/),
	 	vocals 	 	: new RegExp(/^[AaEeIiOoUuYy]+$/),
		full 		: new RegExp(/[^\s]/),
	// Login y password
	    login 		: new RegExp(/^.{2,25}$/),
		password 	: new RegExp(/^.{4,25}$/),	
	    alfanumpass : new RegExp(/^\w*(?=\w*\d)(?=\w*[a-zA-Z])\w*$/),    
	// Contacto
		nombre 		: new RegExp(/^.{2,25}$/),
		name 		: new RegExp(/^.{2,25}$/),
		apellido1	: new RegExp(/^.{2,25}$/),
		firstname	: new RegExp(/^.{2,25}$/),
		apellido2	: new RegExp(/^.{2,25}$/),	
		lastname	: new RegExp(/^.{2,25}$/),
		apellidos	: new RegExp(/^.{2,25}|.{2,25}\s.{2,25}$/),
	    telefono	: new RegExp(/[89]{1}[0-9]{8}/),
	    phone		: new RegExp(/[89]{1}[0-9]{8}/),
	    movil		: new RegExp(/[6][0-9]{8}/),
	    mobilephone	: new RegExp(/[6][0-9]{8}/),
		email 		: new RegExp(/^([\w\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/),
	// ZIP CODES
		cp 		 	: new RegExp(/[0-9]{5}/),
		us_zip_5 	: new RegExp(/^\d{5}$/),	// Solo "xxxxx"
		us_zip_4 	: new RegExp(/^\d{5}-\d{4}$/),	// Solo "xxxxx-xxxx"
		us_zip_4o5	: new RegExp(/^\d{5}$|^\d{5}-\d{4}$/),	// "xxxxx" o "xxxxx-xxxx"
		canadianzip : new RegExp(/^[a-zA-Z][0-9][a-zA-Z]\s?[0-9][a-zA-Z][0-9]$/), // "T2p 3c7" o "T3P3c7" o "T2P 3C7",
		argentinazip: new RegExp(/^([A-HJ-TP-Z]{1}\d{4}[A-Z]{3}|[a-z]{1}\d{4}[a-hj-tp-z]{3})$/), // "C1406HHA" | "A4126AAB" | "c1406hha"
		brazilzip	: new RegExp(/((^\d{5}$)|(^\d{8}$))|(^\d{5}-\d{3}$)/), // "70235" o "70235-120" o "70235125"
		dutchzip	: new RegExp(/[0-9]{4}\s*[a-zA-Z]{2}/), // "1054 WD" o "1054WD" o "1054 wd"
	// Documentacion
		nif 		: new RegExp(/^[0-9]{8}[-]?[a-zA-Z]{1}$/),
		cif 		: new RegExp(/^[a-zA-Z]{1}[-]?[0-9]{8}$/),
		nies 		: new RegExp(/^[XYZxyz]{1}[0-9]{7}[-]?[A-Za-z]{1}|[Tt]{1}[A-Za-z0-9]{8}$/ ),
		niex 		: new RegExp(/^[XYZxyz]{1}[0-9]{7}[-]?[A-Za-z]{1}$/),
		niet 		: new RegExp(/^[Tt]{1}[A-Za-z0-9]{8}$/),
	// Tipos de fichero
		rar			: new RegExp(/^(.*)\.([Rr][Aa][Rr])$/),
		zip 		: new RegExp(/^(.*)\.([Zz][Ii][Pp])$/),
		mp3 		: new RegExp(/^(.*)\.([Mm][Pp][3])$/),
		mp4 		: new RegExp(/^(.*)\.([Mm][Pp][4])$/),
		mov 		: new RegExp(/^(.*)\.([Mm][Oo][Vv])$/),
		avi 		: new RegExp(/^(.*)\.([Aa][Vv][Ii])$/),
		wma 		: new RegExp(/^(.*)\.([Ww][Mm][Aa])$/),
		wmv 		: new RegExp(/^(.*)\.([Ww][Mm][Vv])$/),
		mpg 		: new RegExp(/^(.*)\.([Mm][Pp][Gg])$/),
		mpeg 		: new RegExp(/^(.*)\.([Mm][Pp][Ee][Gg])$/),
		gif 		: new RegExp(/^(.*)\.([Gg][Ii][Ff])$/),
		jpg 		: new RegExp(/^(.*)\.([Jj][Pp][Gg])$/),
		jpeg 		: new RegExp(/^(.*)\.([Jj][Pp][Ee][Gg])$/),
		png 		: new RegExp(/^(.*)\.([Pp][Nn][Gg])$/),
		image 		: new RegExp(/^.*(\.[Jj][Pp][Gg]|\.[Gg][Ii][Ff]|\.[Jj][Pp][Ee][Gg]|\.[Pp][Nn][Gg])$/),
		swf 		: new RegExp(/^(.*)\.([Ss][Ww][Ff])$/),
	// URL's
		onlinerar 	: new RegExp(/^(http\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(?:\/\S*)?(?:[a-zA-Z0-9_])+\.(?:rar|RAR))$/),
		onlinezip 	: new RegExp(/^(http\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(?:\/\S*)?(?:[a-zA-Z0-9_])+\.(?:zip|ZIP))$/),
		onlinemp3 	: new RegExp(/^(http\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(?:\/\S*)?(?:[a-zA-Z0-9_])+\.(?:mp3|MP3))$/),
		onlinemp4 	: new RegExp(/^(http\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(?:\/\S*)?(?:[a-zA-Z0-9_])+\.(?:mp4|MP4))$/),
		onlinemov 	: new RegExp(/^(http\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(?:\/\S*)?(?:[a-zA-Z0-9_])+\.(?:mov|MOV))$/),
		onlineavi 	: new RegExp(/^(http\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(?:\/\S*)?(?:[a-zA-Z0-9_])+\.(?:avi|AVI))$/),
		onlinewma 	: new RegExp(/^(http\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(?:\/\S*)?(?:[a-zA-Z0-9_])+\.(?:wma|WMA))$/),
		onlinewmv 	: new RegExp(/^(http\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(?:\/\S*)?(?:[a-zA-Z0-9_])+\.(?:wmv|WMV))$/),
		onlinegif 	: new RegExp(/^(http\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(?:\/\S*)?(?:[a-zA-Z0-9_])+\.(?:gif|GIF))$/),
		onlinejpg 	: new RegExp(/^(http\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(?:\/\S*)?(?:[a-zA-Z0-9_])+\.(?:jpg|JPG))$/),
		onlinepng 	: new RegExp(/^(http\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(?:\/\S*)?(?:[a-zA-Z0-9_])+\.(?:png|PNG))$/),
		onlinejpeg 	: new RegExp(/^(http\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(?:\/\S*)?(?:[a-zA-Z0-9_])+\.(?:jpeg|JPEG))$/),
		onlinejpgs 	: new RegExp(/^(http\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(?:\/\S*)?(?:[a-zA-Z0-9_])+\.(?:jpg|jpeg|JPG|JPEG))$/),
		onlineimage : new RegExp(/^(http\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(?:\/\S*)?(?:[a-zA-Z0-9_])+\.(?:jpg|jpeg|gif|png|JPG|JPEG|GIF|PNG))$/),
		onlineswf 	: new RegExp(/^(http\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(?:\/\S*)?(?:[a-zA-Z0-9_])+\.(?:swf|SWF))$/),
		onlineflv 	: new RegExp(/^(http\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(?:\/\S*)?(?:[a-zA-Z0-9_])+\.(?:flv|FLV))$/),
		youtubeurl	: new RegExp(/^http:\/\/(www\.|[a-z]{2}\.)?youtube\.com\/watch\?v=([^&]+)/),
		vimeourl	: new RegExp(/http:\/\/(www\.)?vimeo.com\/([0-9]+)$/),
	// Fechas y hora
		'mm/dd/yyyy': new RegExp(/^(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[13-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/),
		'yyyy/mm/dd': new RegExp(/^(?:(?:(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(\/|-|\.)(?:0?2\1(?:29)))|(?:(?:(?:1[6-9]|[2-9]\d)?\d{2})(\/|-|\.)(?:(?:(?:0?[13578]|1[02])\2(?:31))|(?:(?:0?[1,3-9]|1[0-2])\2(29|30))|(?:(?:0?[1-9])|(?:1[0-2]))\2(?:0?[1-9]|1\d|2[0-8]))))$/),
		'dd/mm/yyyy': new RegExp(/^(((((0[1-9])|(1\d)|(2[0-8]))\/((0[1-9])|(1[0-2])))|((31\/((0[13578])|(1[02])))|((29|30)\/((0[1,3-9])|(1[0-2])))))\/((20[0-9][0-9])|(19[0-9][0-9])))|((29\/02\/(19|20)(([02468][048])|([13579][26]))))$/),
		'mm/dd/yy'	: new RegExp(/^(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[13-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/),
		'yy/mm/dd'	: new RegExp(/^(?:(?:(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(\/|-|\.)(?:0?2\1(?:29)))|(?:(?:(?:1[6-9]|[2-9]\d)?\d{2})(\/|-|\.)(?:(?:(?:0?[13578]|1[02])\2(?:31))|(?:(?:0?[1,3-9]|1[0-2])\2(29|30))|(?:(?:0?[1-9])|(?:1[0-2]))\2(?:0?[1-9]|1\d|2[0-8]))))$/),
		'dd/mm/yy'	: new RegExp(/^(((((0[1-9])|(1\d)|(2[0-8]))\/((0[1-9])|(1[0-2])))|((31\/((0[13578])|(1[02])))|((29|30)\/((0[1,3-9])|(1[0-2])))))\/((20[0-9][0-9])|(19[0-9][0-9])))|((29\/02\/(19|20)(([02468][048])|([13579][26]))))$/),		
		time12		: new RegExp(/^((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))$|^([01]\d|2[0-3])(:[0-5]\d){0,2}$/),
		time24		: new RegExp(/^((0?[1-9]|1[024])(:[0-5]\d){0,2})$|^([01]\d|2[0-3])(:[0-5]\d){0,2}$/),
	// Miscelanea
		colorhex 	: new RegExp(/^#?([a-f]|[A-F]|[0-9]){3}(([a-f]|[A-F]|[0-9]){3})?$/),
		creditcar 	: new RegExp('^(\\d{4}[-]){3}\\d{4}|\\d{16}$'),	 // 1234-1234-1234-1234 or 1234 1234 1234 1234 or 1234123412341234
		creditcar2  : new RegExp(/^((4\d{3})|(5[1-5]\d{2})|(6011))-?\d{4}-?\d{4}-?\d{4}|3[4,7]\d{13}$/), // 6011-1111-1111-1111 or 5423-1111-1111-1111 or 341111111111111
	// Paths and commnunications	
		domainurl 	: new RegExp(/^(http\:\/\/(?:www\.)?[a-zA-Z0-9]+(?:(?:\-|_)[a-zA-Z0-9]+)*(?:\.[a-zA-Z0-9]+(?:(?:\-|_)[a-zA-Z0-9]+)*)*\.[a-zA-Z]{2,4}(?:\/)?)$/),
		ip 			: new RegExp(/^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$/),
		abspath		: new RegExp(/^((?:\/[a-zA-Z0-9]+(?:_[a-zA-Z0-9]+)*(?:\-[a-zA-Z0-9]+)*)+)$ /), //OK: /users/web/mysite/web/cgi-bin KO: /users/web/my site/web/cgi-bi users/web/mysite/web/cgi-bi
		urlparams	: new RegExp(/^((?:\?[a-zA-Z0-9_]+\=[a-zA-Z0-9_]+)?(?:\&[a-zA-Z0-9_]+\=[a-zA-Z0-9_]+)*)$/),
		url			: new RegExp(/^(http\:\/\/[a-zA-Z0-9_\-]+(?:\.[a-zA-Z0-9_\-]+)*\.[a-zA-Z]{2,4}(?:\/[a-zA-Z0-9_]+)*(?:\/[a-zA-Z0-9_]+\.[a-zA-Z]{2,4}(?:\?[a-zA-Z0-9_]+\=[a-zA-Z0-9_]+)?)?(?:\&[a-zA-Z0-9_]+\=[a-zA-Z0-9_]+)*)$/)
	};
	
	this.getFilter = function(i) {
		try {
			return _FILTERS[i];
		} catch(e) { return new RegExp('[^\\s]'); }
	};

	this.pushFilter = function(i,r) {
		_FILTERS[i] = (r.constructor == RegExp) ? r : null;
	};
}

