Librería de validaciones simples para Javascript

Este es mi primer post para coders.me y espero que salga bien:

Como contribución para el blog les dejo una pequeña y simple librería de javascript que yo realice hace algún tiempo, y dejenme decirles que es muy útil, en lo personal me ha servido de mucho y sacado de apuros, es para todas aquellas validaciones de valor de controles que son de ley

Básicamente, contiene las distintas funciones para validar los más comunes tipos de datos (integer, date, etc) , y algunos rangos de valores (rango de fechas y valor numérico)

function _IsInteger(str)
{
	if (typeof(str)=='undefined')
	{
		return false;
	}
	var expr = /^[\+\-]?[0-9]*$/;
	if (!expr.test(str))
		return false;

	return true;
}
function _IsNumber(str)
{
	if (typeof(str)=='undefined')
	{
		return false;
	}
	var expr1 = /^[\+\-]?[0-9]+(\.[0-9]{0,})?$/;
	var expr2 = /^[\+\-]?(\.[0-9]{0,})?$/;
	if (!expr1.test(str)){
		if (!expr2.test(str)){
			return false;
		}
	}
	return true;
}
function _IsMoney(str)
{
	if (typeof(str)=='undefined')
	{
		return false;
	}
	var expr1 = /(?!^0*$)(?!^0*\.0*$)^\d{1,10}(\.\d{1,2})?$/;
	if (!expr1.test(str)){
		return false;
	}
	return true;
}
function _ValInMinMax(value,min,max)
{
	if (!(_IsNumber(value))) { return false; }
	if ((!(_IsNumber(min))) || (!(_IsNumber(max)))) { return false; }
	if ((typeof(min)!='undefined') || (typeof(max)!='undefined'))
	{
		if ((typeof(min)!='undefined') && (typeof(max)!='undefined'))
		{
			if ((!isNaN(min)) && (!isNaN(max)))
				if (min>max)
					return false;
		}
		else
		{
			if (typeof(min)!='undefined')
			{
				if (!isNaN(min))
					if (valuemax)
						return false;
			}
		}
	}
	return true;
}
function _IsDate(date, mask, schar){

	if (typeof(date)=='undefined'){
		return false;
	}
	if (typeof(mask)=='undefined'){
		mask = "ddmmyyyy";
	} else {
		mask = mask.toLowerCase();
	}
	if (typeof(schar)=='undefined'){
		mask = '/';
	}
	if ((!(_IsInteger(date.split(schar)[0]))) || (!(_IsInteger(date.split(schar)[1]))) || (!(_IsInteger(date.split(schar)[2])))){
		return false;
	}
	var day, month, year;
	switch (mask){
		case "ddmmyyyy":
			day = date.split(schar)[0];
			month = date.split(schar)[1];
			year = date.split(schar)[2];
			break;
		case "mmddyyyy":
			day = date.split(schar)[1];
			month = date.split(schar)[0];
			year = date.split(schar)[2];
			break;
		case "yyyyddmm":
			day = date.split(schar)[2];
			month = date.split(schar)[0];
			year = date.split(schar)[1];
			break;
		default :
			return false;
	}
	if (!(_ValInMinMax(year,1900,2050))){ return false;}
	if (!(_ValInMinMax(month,1,12))){ return false;}
	if ((month==4) || (month==6) || (month==9) || (month==11)){
		if (!(_ValInMinMax(day,1,30))){ return false;}
	}
	if ((month==1) || (month==3) || (month==5) || (month==7) || (month==8) || (month==10) || (month==12)){
		if (!(_ValInMinMax(day,1,31))){ return false;}
	}
	if (month==2){
		if (!(new Date(year,1,29).getDate()==29)){
			if (!(_ValInMinMax(day,1,28))){ return false;}
		} else {
			if (!(_ValInMinMax(day,1,29))){ return false;}
		}
	}
	return true;
}
function _ValDateInMinMax(date, dmax, dmin, mask, schar){
	if ((typeof(date)=='undefined') || (typeof(dmin)=='undefined') || (typeof(dmax)=='undefined')){
		return false;
	}
	if ((!(_IsDate(date,mask,schar))) || (!(_IsDate(dmin,mask,schar)) || (!(_IsDate(dmax,mask,schar)))){
		return false;
	}
	var day, month, year, minday, minmonth, minyear,maxday, maxmonth, maxyear;
	switch (mask){
		case "ddmmyyyy":
			day = date.split(schar)[0];
			month = date.split(schar)[1];
			year = date.split(schar)[2];

			minday = dmin.split(schar)[0];
			minmonth = dmin.split(schar)[1];
			minyear = dmin.split(schar)[2];

			maxday = dmax.split(schar)[0];
			maxmonth = dmax.split(schar)[1];
			maxyear = dmax.split(schar)[2];
			break;
		case "mmddyyyy":
			day = date.split(schar)[1];
			month = date.split(schar)[0];
			year = date.split(schar)[2];

			minday = dmin.split(schar)[1];
			minmonth = dmin.split(schar)[0];
			minyear = dmin.split(schar)[2];

			maxday = dmax.split(schar)[1];
			maxmonth = dmax.split(schar)[0];
			maxyear = dmax.split(schar)[2];
			break;
		case "yyyyddmm":
			day = date.split(schar)[2];
			month = date.split(schar)[0];
			year = date.split(schar)[1];

			minday = dmin.split(schar)[2];
			minmonth = dmin.split(schar)[0];
			minyear = dmin.split(schar)[1];

			maxday = dmax.split(schar)[2];
			maxmonth = dmax.split(schar)[0];
			maxyear = dmax.split(schar)[1];
			break;
		default :
			return false;
	}
	if ((!(year>=minyear)) || (!(year=minmonth)) || (!(month=minday)) || (!(day<=maxday))) { return false; }
	return true;
}
function _TextInMin(str, min)
{
	if ((typeof(str)=='undefined') || (typeof(min)=='undefined'))){
		return false;
	}
	if ((!(str.length = max)))
	{
		return false;
	}
		return true;
}
function _TextInMinMax(str, min, max)
{
	if ((typeof(str)=='undefined') || (typeof(min)=='undefined') || (typeof(max)=='undefined')){
		return false;
	}
	if ((!(str.length = max)))
	{
		return false;
	}
		return true;
}
function _IsEmail(str)
{
	if (typeof(str)=='undefined')
	{
		return false;
	}
	var expr1 = /^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$/;
	if (!expr1.test(str)){
		return false;
	}
	return true;
}
function _IsEmailList(str, schar)
{
	if (typeof(str)=='undefined')
	{
		return false;
	}
	if ((typeof(schar)=='undefined')){
		schar = ",";
	}
	var array = str.split(schar);
	for (var email in array)
	{
		if (!(_IsEmail(email))){ return false;}
	}
	return true;
}
function _IsRFC(str)
{
	if ((typeof(schar)=='undefined')){
		return false;
	}
	var expr1 = /^[A-Za-z]{4}[ |\-]{0,1}[0-9]{6}[ |\-]{0,1}[0-9A-Za-z]{3}$/;
	if (!expr1.test(str)){
		return false;
	}
	return true;
}

Espero sea de su agrado y les sirva. Saludos

Charlie says:

Bastante útil, especialmente las validaciones con expresiones regulares.

Gracias.

Fer says:

Justo lo que estba buscando! gracias

Seguro que lo utilizaré, además bastantes veces x’D

Thx.

Excelentes scripts, a nadie le gusta tipear mucho script, aquí está listo para usarlo, fantástico!.

Gracias,

David says:

genial, muchas gracias por el aporte, seguro que me sera de mucha ayuda.

Gregorio says:

Muy bueno tu script, una duda que me ha surgido es la validacion se expresiones matematicas, claro se debe hacer con pilas y colas y esas cosas la verdad no he podido realizar la validacion de un textarea con informacion de este tipo, un ejemplo claro seria una cadena como estas: sum(a1*((b2+e1)/100)) me gustria validar esta expresion o alguna como esta si alguien me puede ayudar seria exelente para mi como para la comunidad yo tratare de hacer algo y lo publicare por aca gracias de nuevo. Escribo desde Barquisimeto-Lara Venezuela

Felix says:

Útiles!!!

Felix says:

Todo en uno, para bajar aquí

Thierry says:

Holà,
Bravo
I’m sorry i’m French so i speak english :-)

I just want to say that i think you make a little mistake in this function : _ValInMinMax

So i rewrite it juste a little bit :

function _ValInMinMax(value,min,max)
{
	if (!(_IsNumber(value))) { return false; }
	if ((!(_IsNumber(min))) || (!(_IsNumber(max)))) { return false; }
	if ((typeof(min)!='undefined') || (typeof(max)!='undefined'))
	{
		if ((typeof(min)!='undefined') &amp;&amp; (typeof(max)!='undefined'))
		{
			if ((!isNaN(min)) &amp;&amp; (!isNaN(max)))
				if (min&gt;max)
					return false;
				if (value.length&gt;max)
					return false;
				if (value.length&lt;min)
					return false;
		}
		else
		{
			if (typeof(min)!='undefined')
			{
				if (!isNaN(min))
					if (value.length&lt;min)
						return false;
			}
		}
	}
	return true;
}

Enjoy it !

Thierry