JavaScript 常用字符串验证与处理函数库

作者:小括号时间:2026-10-26 19:12:09浏览:396

本文整理了一套实用的 JavaScript 字符串处理与验证函数库,涵盖空值检查、中英文及数字判断、身份证与电话格式验证等场景。通过扩展 String 原型,提供 Trim、Occurs、isDigit 等方法,并附带表单输入限制的正则表达式示例,帮助开发者快速实现前端数据校验功能。

/*

基础字符串验证函数

首先定义一个函数用于检测指定内容是否为空,若检测到为空则触发警告框提示。


*/

function isEmpty(theValue, strMsg){


if(theValue==""){


alert(strMsg+"不能为空!");


return true;


}

return false;


}
/*

接下来是中文判断函数,该函数允许在生僻字位置使用英文“*”符号进行替代。


函数返回 true 表示字符串符合中文规范,返回 false 表示不符合。


*/

function isChinese(str){


var badChar ="ABCDEFGHIJKLMNOPQRSTUVWXYZ";


badChar += "abcdefghijklmnopqrstuvwxyz";


badChar += "0123456789";


badChar += " "+" ";//同时包含半角与全角空格


badChar += "www.jb51.net不包含*或.的英文符号";//此处原文注释可能存在歧义,保留原意


if(""==str){


return false;


}

for(var i=0;i < str.length;i++){ var c = str.charAt(i);//遍历字符串str中的每个字符


if(badChar.indexOf(c) > -1){


return false;


}
}

return true;


}
/*

数字判断函数用于验证字符串是否全部由数字组成,返回 true 表示全部是数字,否则返回 false。


*/

function isNumber(str){


if(""==str){


return false;


}

var reg = /\D/;


return str.match(reg)==null;


}
/*

该函数用于判断给定字符串是否为指定长度的纯数字,


若长度和内容均符合则返回 true,否则返回 false。


*/

function isNumber_Ex(str,len){


if(""==str){


return false;


}

if(str.length!=len){


return false;


}

if(!isNumber(str)){


return false;


}

return true;


}
/*

金钱格式判断函数,允许字符串以"-"开头表示欠款状态。


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


*/

function isMoney(str){


if(""==str){


return false;


}

for(var i=0;i < str.length;i++){ var c = str.charAt(i);


if(i==0){


if(c!="-"&&(c<"0"||c>"9")){


return false;


}else if(c=="-"&&str.length==1){


return false;


}

}else if(c < "0" || c > "9"){


return false;


}
}

return true;


}
/*

英文判断函数用于验证字符串是否完全由英文字母组成,返回 true 表示全部为英文,否则返回 false。


*/

function isLetter(str){


if(""==str){


return false;


}

for(var i=0;i < str.length;i++){ var c = str.charAt(i);


if((c<"a"||c>"z")&&(c<"A"||c>"Z")){


return false;


}
}

return true;


}
/*

空格判断函数,若字符串包含任何空格则返回 false,若不包含空格则返回 true。


注意:空字符串""无法通过此函数进行有效判断。


*/

function notInSpace(str){


if(""==str){


return false;


}

var badChar =" ";


badChar += " ";


for(var i=0;i < str.length;i++){ var c = str.charAt(i);//遍历字符串str中的字符


if(badChar.indexOf(c) > -1){


return false;


}
}

return true;


}
/*

发票号(**号)判断函数,验证字符串是否符合发票号规范,返回 true 表示符合,否则返回 false。


*/

function isFPH(str){


if(""==str){


return false;


}

for(var i=0;i < str.length;i++){ var c = str.charAt(i);


if((c < "0" || c > "9") && (c!="-")&&(c!=",")){


return false;


}
}

return true;


}
/*

电话判断函数,允许字符串中包含“数字”、“;”、“-”、“(”、”)”等字符。


若格式符合电话规范则返回 true。


*/

function isTelephone(str){


var trueChar = "()-;1234567890";


if(""==str){


return false;


}

for(var i=0;i < str.length;i++){ var c = str.charAt(i);//遍历字符串str中的字符


if(trueChar.indexOf(c) == -1) return false;


}

return true;


}
/**

学制验证函数,支持1至7年的整数学制,也支持3.5年等小数形式,但不得超过7年或低于1年。


*/

function isXZ(str){


if(""==str){


return false;


}

var reg = /^[1-6](\.5)?$/;


var r = str.match(reg);


if(null!=r){


return true;


}else{


if(str=="7"){


return true;


}else{


return false;


}
}
}
/*

证书编号判断函数,验证编号是否包含中文、数字、大小写字母以及括号和连字符。


若符合规范返回 true,否则返回 false。


*/

function isZSBH(str){


if(""==str){


return false;


}

for(var i=0;i < str.length;i++){ var c = str.charAt(i);


alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";


alpha += "abcdefghijklmnopqrstuvwxyz";


alpha += "()-";


if(!isChinese(c)&&!isNumber(c)&&alpha.indexOf(c)==-1){


return false;


}
}

return true;


}
/*

身份证判断函数,验证是否为有效身份证号,返回 true 表示有效,否则返回 false。


支持15位纯数字或18位数字(最后一位可为大写X)。


*/

function isSFZ(str){


if(""==str){


return false;


}

if(str.length!=15&&str.length!=18){//身份证长度不正确


return false;


}

if(str.length==15){


if(!isNumber(str)){


return false;


}

}else{


str1 = str.substring(0,17);


str2 = str.substring(17,18);


alpha = "X0123456789";


if(!isNumber(str1)||alpha.indexOf(str2)==-1){


return false;


}
}

return true;


}
/*

获取当前日期的年、月、日信息。


调用方式:today = new getToday(); 则 today.year 为今天的年份,以此类推获取月份和日期。


*/

function getToday(){


this.now = new Date();


this.year = this.now.getFullYear();


this.month = this.now.getMonth();


this.day = this.now.getDate();


}

正则表达式表单输入限制

以下是使用正则表达式判断数字、字母和中文的示例代码。


1.


var reg = /^(\w|[\u4E00-\u9FA5])*$/;


if(arr=username.match(reg))


{

ti=1;


return ture;


}

else


{

alert("用户名只允许为英文,数字和汉字的混合,\n请检查是否前后有空格或者其他符号");


ti=0;


return false;


}

2.利用正则表达式限制网页表单里的文本框输入内容:


用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"


用正则表达式限制只能输入全角字符: onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"


用正则表达式限制只能输入数字:onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"


用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"



数字验证示例


<script>


function check()


{

if(!isNaN(document.all.form.str.value))


{

alert("数字");


}

</script>


字母验证示例


<script>


function check()


{

var str = /[_a-zA-Z]/;


if(str.test(document.all.form.str.value))


{

alert("字母");


}
}

</script>


<form name="form" action="" onsubmit="return check();">


<input type=text name=str>


<input type=submit>


</form>


---------------------------------------------------
/**

String 对象扩展方法库

* 一些常用的javascript函数(方法)


*

* 为便于使用,均书写成String对象的方法


* 把他保存为.js文件,可方便的扩展字符串对象的功能


*

* 方法名 功 能


* ----------- --------------------------------

* Trim 删除首位空格


* Occurs 统计指定字符出现的次数


* isDigit 检查是否由数字组成


* isAlpha 检查是否由数字字母和下划线组成


* isNumber 检查是否为数


* lenb 返回字节数


* isInChinese 检查是否包含汉字


* isEmail 简单的email检查


* isDate 简单的日期检查,成功返回日期对象


* isInList 检查是否有列表中的字符字符


* isInList 检查是否有列表中的字符字符


*/

/*** 删除首尾空格 ***/


String.prototype.Trim = function() {


return this.replace(/(^\s*)|(\s*$)/g, "");


}

/*** 统计指定字符出现的次数 ***/


String.prototype.Occurs = function(ch) {


// var re = eval("/[^"+ch+"]/g");


// return this.replace(re, "").length;


return this.split(ch).length-1;


}

/*** 检查是否由数字组成 ***/


String.prototype.isDigit = function() {


var s = this.Trim();


return (s.replace(/\d/g, "").length == 0);


}

/*** 检查是否由数字字母和下划线组成 ***/


String.prototype.isAlpha = function() {


return (this.replace(/\w/g, "").length == 0);


}

/*** 检查是否为数 ***/


String.prototype.isNumber = function() {


var s = this.Trim();


return (s.search(/^[+-]?[0-9.]*$/) >= 0);


}

/*** 返回字节数 ***/


String.prototype.lenb = function() {


return this.replace(/[^\x00-\xff]/g,"**").length;


}

/*** 检查是否包含汉字 ***/


String.prototype.isInChinese = function() {


return (this.length != this.replace(/[^\x00-\xff]/g,"**").length);


}

/*** 简单的email检查 ***/


String.prototype.isEmail = function() {


var strr;


var mail = this;


var re = /(\w+@\w+\.\w+)(\.{0,1}\w*)(\.{0,1}\w*)/i;


re.exec(mail);


if(RegExp.$3!="" && RegExp.$3!="." && RegExp.$2!=".")


strr = RegExp.$1+RegExp.$2+RegExp.$3;


else


if(RegExp.$2!="" && RegExp.$2!=".")


strr = RegExp.$1+RegExp.$2;


else


strr = RegExp.$1;


return (strr==mail);


}

/*** 简单的日期检查,成功返回日期对象 ***/


String.prototype.isDate = function() {


var p;


var re1 = /(\d{4})[年./-](\d{1,2})[月./-](\d{1,2})[日]?$/;


var re2 = /(\d{1,2})[月./-](\d{1,2})[日./-](\d{2})[年]?$/;


var re3 = /(\d{1,2})[月./-](\d{1,2})[日./-](\d{4})[年]?$/;


if(re1.test(this)) {


p = re1.exec(this);


return new Date(p[1],p[2],p[3]);


}

if(re2.test(this)) {


p = re2.exec(this);


return new Date(p[3],p[1],p[2]);


}

if(re3.test(this)) {


p = re3.exec(this);


return new Date(p[3],p[1],p[2]);


}

return false;


}

/*** 检查是否有列表中的字符字符 ***/


String.prototype.isInList = function(list) {


var re = eval("/["+list+"]/");


return re.test(this);


}
作者最新文章