function DyRegExp(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}$/),
		nombrelargo : new RegExp(/^.{2,50}$/),
		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}$/),
	    telefono	: new RegExp(/[89]{1}[0-9]{8}$/),
	    phone		: new RegExp(/[89]{1}[0-9]{8}$/),
	    movil		: new RegExp(/[67][0-9]{8}$/),
	    mobilephone	: new RegExp(/[67][0-9]{8}$/),
		cp 		 	: new RegExp(/[0-9]{5}/),
		us_zip_4 	: new RegExp(/^\d{5}-\d{4}$ /),	// Solo xxxxx-xxxx
	    email 		: new RegExp(/^([\w\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/),
	// Documentacion
		nif 		: new RegExp('^[0-9]{8}[-]?[a-zA-Z]{1}$'),
		cif 		: new RegExp('^[a-zA-Z]{1}[-][0-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])$/),
		mkv 		: new RegExp(/^(.*)\.([Mm][Kk][Vv])$/),
		flv 		: new RegExp(/^(.*)\.([Ff][Ll][Vv])$/),
		jpg 		: new RegExp(/^(.*)\.([Jj][Pp][Gg])$/),
		jpeg 		: new RegExp(/^(.*)\.([Jj][Pp][Ee][Gg])$/),
		'3gp' 		: new RegExp(/^(.*)\.([3][Gg][Pp])$/),
		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])$/),
	// Tipos de fichero online
		onlinegif 	: new RegExp(/^(.*)\.([Gg][Ii][Ff])[?](.*)$/),
		onlinejpg 	: new RegExp(/^(.*)\.([Jj][Pp][Gg])[?](.*)$/),
		onlinejpeg  : new RegExp(/^(.*)\.([Jj][Pp][Ee][Gg])[?](.*)$/),
		onlinepng 	: new RegExp(/^(.*)\.([Pp][Nn][Gg])[?](.*)$/),
		onlineimage : new RegExp(/^(.*)\.(\.[Jj][Pp][Gg]|\.[Gg][Ii][Ff]|\.[Jj][Pp][Ee][Gg]|\.[Pp][Nn][Gg])[?](.*)$/),
		onlineswf 	: new RegExp(/^(.*)\.([Ss][Ww][Ff])[?](.*)$/),
	// 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}$/),
		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 validator:
	 * 	^(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_]+)*)$
	 *  http://website.com | http://subdomain.web-site.com/cgi-bin/perl.cgi?key1=value1&key2=value2
	 *
	 * image url
	 * 	^(http\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(?:\/\S*)?(?:[a-zA-Z0-9_])+\.(?:jpg|jpeg|gif|png))$
	 *  http://website.com/directory/image.gif
	 *
	 *
	 * Embed youtube video
	 * 	(\"http:\/\/www\.youtube\.com\/v\/\w{11}\&rel\=1\")
	 *
	 * Embed google video
	 * 	(\"http:\/\/video\.google\.com\/googleplayer\.swf\?docId=\d{19}\&hl=[a-z]{2}\")
	 *
	 */




	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;
	};
}

