JavaScript 表单验证常用函数大全

作者:函数茶馆时间:2026-10-29 00:36:07浏览:244

本文整理了一系列常用的 JavaScript 表单验证函数,涵盖 IP 地址、邮箱、手机号、日期格式、金额及字符串类型等校验逻辑。通过正则表达式与基础逻辑判断,帮助开发者快速实现前端数据合法性检查,提升用户体验与数据安全性。

JavaScript 表单验证函数集

以下整理了一系列实用的 JavaScript 验证函数,适用于常见的表单数据校验场景。


该函数的主要功能是校验输入的字符串是否符合标准的 IP 地址格式。


参数 strIP 代表需要校验的 IP 地址字符串。


若格式正确则返回 true,否则返回 false。



*/

function isIP(strIP) {


if (isNull(strIP)) return false;


var re=/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/g //匹配IP地址的正则表达式


if(re.test(strIP))


{

if( RegExp.$1 <256 && RegExp.$2<256 && RegExp.$3<256 && RegExp.$4<256) return true;


}

return false;


}

/*

该函数用于检查输入字符串是否为空或仅包含空格。


参数 str 代表待检查的字符串。


返回值为布尔类型。


若字符串全为空或仅含空格则返回 true,否则返回 false。


*/

function isNull( str ){


if ( str == "" ) return true;


var regu = "^[ ]+$";


var re = new RegExp(regu);


return re.test(str);


}

 
/*

该函数用于检查输入对象的值是否符合整数格式。


参数 str 代表输入的字符串。


若通过验证返回 true,否则返回 false。



*/

function isInteger( str ){


var regu = /^[-]{0,1}[0-9]{1,}$/;


return regu.test(str);


}

/*

该函数用于检查输入手机号码是否正确。


参数 s 代表待校验的字符串。


参数 s 为字符串类型。


返回值为布尔类型。


若通过验证返回 true,否则返回 false。



*/

function checkMobile( s ){


var regu =/^[1][3][0-9]{9}$/;


var re = new RegExp(regu);


if (re.test(s)) {


return true;


}else{


return false;


}
}

 
/*

该函数用于检查输入字符串是否符合正整数格式。


参数 s 代表待校验的字符串。


参数 s 为字符串类型。


返回值为布尔类型。


若通过验证返回 true,否则返回 false。



*/

function isNumber( s ){


var regu = "^[0-9]+$";


var re = new RegExp(regu);


if (s.search(re) != -1) {


return true;


} else {


return false;


}
}

/*

该函数用于检查输入字符串是否是带小数的数字格式,支持负数。


参数 s 代表待校验的字符串。


参数 s 为字符串类型。


返回值为布尔类型。


若通过验证返回 true,否则返回 false。



*/

function isDecimal( str ){


if(isInteger(str)) return true;


var re = /^[-]{0,1}(\d+)[\.]+(\d+)$/;


if (re.test(str)) {


if(RegExp.$1==0&&RegExp.$2==0) return false;


return true;


} else {


return false;


}
}

/*

该函数用于检查输入对象的值是否符合端口号格式。


参数 str 代表输入的字符串。


若通过验证返回 true,否则返回 false。



*/

function isPort( str ){


return (isNumber(str) && str<65536);


}

/*

该函数用于检查输入对象的值是否符合 E-Mail 格式。


参数 str 代表输入的字符串。


若通过验证返回 true,否则返回 false。



*/

function isEmail( str ){


var myReg = /^[-_A-Za-z0-9]+@([_A-Za-z0-9]+\.)+[A-Za-z0-9]{2,3}$/;


if(myReg.test(str)) return true;


return false;


}

/*

该函数用于检查输入字符串是否符合金额格式。


格式定义为带小数的正数,小数点后最多三位。


参数 s 代表待校验的字符串。


参数 s 为字符串类型。


返回值为布尔类型。


若通过验证返回 true,否则返回 false。



*/

function isMoney( s ){


var regu = "^[0-9]+[\.][0-9]{0,3}$";


var re = new RegExp(regu);


if (re.test(s)) {


return true;


} else {


return false;


}
}
/*

该函数用于检查输入字符串是否只由英文字母、数字和下划线组成。


参数 s 代表待校验的字符串。


参数 s 为字符串类型。


返回值为布尔类型。


若通过验证返回 true,否则返回 false。



*/

function isNumberOr_Letter( s ){//判断是否是数字或字母



var regu = "^[0-9a-zA-Z\_]+$";


var re = new RegExp(regu);


if (re.test(s)) {


return true;


}else{


return false;


}
}
/*

该函数用于检查输入字符串是否只由英文字母和数字组成。


参数 s 代表待校验的字符串。


参数 s 为字符串类型。


返回值为布尔类型。


若通过验证返回 true,否则返回 false。



*/

function isNumberOrLetter( s ){//判断是否是数字或字母



var regu = "^[0-9a-zA-Z]+$";


var re = new RegExp(regu);


if (re.test(s)) {


return true;


}else{


return false;


}
}
/*

该函数用于检查输入字符串是否只由汉字、字母、数字组成。


参数 value 代表待校验的字符串。


参数 value 为字符串类型。


返回值为布尔类型。


若通过验证返回 true,否则返回 false。



*/

function isChinaOrNumbOrLett( s ){//判断是否是汉字、字母、数字组成



var regu = "^[0-9a-zA-Z\u4e00-\u9fa5]+$";


var re = new RegExp(regu);


if (re.test(s)) {


return true;


}else{


return false;


}
}

/*

该函数用于判断输入的字符串是否为有效日期。


参数 date 代表日期字符串;fmt 代表日期格式。


若通过验证返回 true,否则返回 false。


*/

function isDate( date, fmt ) {


if (fmt==null) fmt="yyyyMMdd";


var yIndex = fmt.indexOf("yyyy");


if(yIndex==-1) return false;


var year = date.substring(yIndex,yIndex+4);


var mIndex = fmt.indexOf("MM");


if(mIndex==-1) return false;


var month = date.substring(mIndex,mIndex+2);


var dIndex = fmt.indexOf("dd");


if(dIndex==-1) return false;


var day = date.substring(dIndex,dIndex+2);


if(!isNumber(year)||year>"2100" || year< "1900") return false;


if(!isNumber(month)||month>"12" || month< "01") return false;


if(day>getMaxDay(year,month) || day< "01") return false;


return true;


}

function getMaxDay(year,month) {


if(month==4||month==6||month==9||month==11)


return "30";


if(month==2)


if(year%4==0&&year%100!=0 || year%400==0)


return "29";


else


return "28";


return "31";


}

/*

该函数用于判断字符1是否以字符串2结束。


参数 str1 代表主字符串;str2 代表被包含的字符串。


若通过验证返回 true,否则返回 false。



*/

function isLastMatch(str1,str2)


{ 

var index = str1.lastIndexOf(str2);


if(str1.length==index+str2.length) return true;


return false;


}

 
/*

该函数用于判断字符1是否以字符串2开始。


参数 str1 代表主字符串;str2 代表被包含的字符串。


若通过验证返回 true,否则返回 false。



*/

function isFirstMatch(str1,str2)


{ 

var index = str1.indexOf(str2);


if(index==0) return true;


return false;


}

/*

该函数用于判断字符1是否包含字符串2。


参数 str1 代表主字符串;str2 代表被包含的字符串。


若通过验证返回 true,否则返回 false。



*/

function isMatch(str1,str2)


{ 

var index = str1.indexOf(str2);


if(index==-1) return false;


return true;


}

 
/*

该函数用于检查输入的起止日期是否正确,规则为两个日期的格式正确。


且结束日期>=起始日期。


参数 startDate 代表起始日期,字符串类型。


参数 startDate 为字符串类型。


参数 endDate 代表结束日期,字符串类型。


返回值为布尔类型。


若通过验证返回 true,否则返回 false。



*/

function checkTwoDate( startDate,endDate ) {


if( !isDate(startDate) ) {


alert("起始日期不正确!");


return false;


} else if( !isDate(endDate) ) {


alert("终止日期不正确!");


return false;


} else if( startDate > endDate ) {


alert("起始日期不能大于终止日期!");


return false;


}

return true;


}

/*

该函数用于检查输入的 Email 信箱格式是否正确。


参数 strEmail 代表待校验的字符串。


参数 strEmail 为字符串类型。


返回值为布尔类型。


若通过验证返回 true,否则返回 false。



*/

function checkEmail(strEmail) {


//var emailReg = /^[_a-z0-9]+@([_a-z0-9]+\.)+[a-z0-9]{2,3}$/;


var emailReg = /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;


if( emailReg.test(strEmail) ){


return true;


}else{


alert("您输入的Email地址格式不正确!");


return false;


}
}

/*

该函数用于检查输入的电话号码格式是否正确。


参数 strPhone 代表待校验的字符串。


参数 strPhone 为字符串类型。


返回值为布尔类型。


若通过验证返回 true,否则返回 false。



*/

function checkPhone( strPhone ) {


var phoneRegWithArea = /^[0][1-9]{2,3}-[0-9]{5,10}$/;


var phoneRegNoArea = /^[1-9]{1}[0-9]{5,8}$/;


var prompt = "您输入的电话号码不正确!"


if( strPhone.length > 9 ) {


if( phoneRegWithArea.test(strPhone) ){


return true;


}else{


alert( prompt );


return false;


}

}else{


if( phoneRegNoArea.test( strPhone ) ){


return true;


}else{


alert( prompt );


return false;


}

 
}
}

 
/*

该函数用于检查复选框被选中的数目。


参数 checkboxID 代表复选框组的 ID。


参数 checkboxID 为字符串类型。


返回值为数值类型。


返回该复选框中被选中的数目。



*/

function checkSelect( checkboxID ) {


var check = 0;


var i=0;


if( document.all(checkboxID).length > 0 ) {


for( i=0; i<document.all(checkboxID).length; i++ ) {


if( document.all(checkboxID).item( i ).checked ) {


check += 1;


}

 

 
}

}else{


if( document.all(checkboxID).checked )


check = 1;


}

return check;


}

function getTotalBytes(varField) {


if(varField == null)


return -1;



var totalCount = 0;


for (i = 0; i< varField.value.length; i++) {


if (varField.value.charCodeAt(i) > 127)


totalCount += 2;


else


totalCount++ ;


}

return totalCount;


}

function getFirstSelectedValue( checkboxID ){


var value = null;


var i=0;


if( document.all(checkboxID).length > 0 ){


for( i=0; i<document.all(checkboxID).length; i++ ){


if( document.all(checkboxID).item( i ).checked ){


value = document.all(checkboxID).item(i).value;


break;


}
}

} else {


if( document.all(checkboxID).checked )


value = document.all(checkboxID).value;


}

return value;


}

 

function getFirstSelectedIndex( checkboxID ){


var value = -2;


var i=0;


if( document.all(checkboxID).length > 0 ){


for ( i=0; i<document.all(checkboxID).length; i++ ) {


if( document.all(checkboxID).item( i ).checked ) {


value = i;


break;


}
}

} else {


if( document.all(checkboxID).checked )


value = -1;


}

return value;


}

function selectAll( checkboxID,status ){



if( document.all(checkboxID) == null)


return;



if( document.all(checkboxID).length > 0 ){


for( i=0; i<document.all(checkboxID).length; i++ ){



document.all(checkboxID).item( i ).checked = status;


}

} else {


document.all(checkboxID).checked = status;


}
}

function selectInverse( checkboxID ) {


if( document.all(checkboxID) == null)


return;



if( document.all(checkboxID).length > 0 ) {


for( i=0; i<document.all(checkboxID).length; i++ ) {


document.all(checkboxID).item( i ).checked = !document.all(checkboxID).item( i ).checked;


}

} else {


document.all(checkboxID).checked = !document.all(checkboxID).checked;


}
}

function checkDate( value ) {


if(value=='') return true;


if(value.length!=8 || !isNumber(value)) return false;


var year = value.substring(0,4);


if(year>"2100" || year< "1900")


return false;



var month = value.substring(4,6);


if(month>"12" || month< "01") return false;



var day = value.substring(6,8);


if(day>getMaxDay(year,month) || day< "01") return false;



return true;


}

/*

该函数用于检查输入的起止日期是否正确,规则为两个日期的格式正确或都为空。


且结束日期>=起始日期。


参数 startDate 代表起始日期,字符串类型。


参数 startDate 为字符串类型。


参数 endDate 代表结束日期,字符串类型。


返回值为布尔类型。


若通过验证返回 true,否则返回 false。



*/

function checkPeriod( startDate,endDate ) {


if( !checkDate(startDate) ) {


alert("起始日期不正确!");


return false;


} else if( !checkDate(endDate) ) {


alert("终止日期不正确!");


return false;


} else if( startDate > endDate ) {


alert("起始日期不能大于终止日期!");


return false;


}

return true;


}

/*

该函数用于检查证券代码是否正确。


参数 secCode 代表证券代码。


参数 secCode 为字符串类型。


返回值为布尔类型。


若通过验证返回 true,否则返回 false。



*/

function checkSecCode( secCode ) {


if( secCode.length !=6 ){


alert("证券代码长度应该为6位");


return false;


}

if(!isNumber( secCode ) ){


alert("证券代码只能包含数字");



 

return false;


}

return true;


}

/****************************************************

function:cTrim(sInputString,iType)


description:字符串去空格的函数


parameters:iType:1=去掉字符串左边的空格



2=去掉字符串左边的空格


0=去掉字符串左边和右边的空格


return value:去掉空格的字符串


****************************************************/

function cTrim(sInputString,iType)


{

var sTmpStr = ' ';


var i = -1;



if(iType == 0 || iType == 1)


{

while(sTmpStr == ' ')


{

++i;


sTmpStr = sInputString.substr(i,1);


}

sInputString = sInputString.substring(i);


}

if(iType == 0 || iType == 2)


{

sTmpStr = ' ';


i = sInputString.length;


while(sTmpStr == ' ')


{

--i;


sTmpStr = sInputString.substr(i,1);


}

sInputString = sInputString.substring(0,i+1);


}

return sInputString;


}

/*
作者最新文章