filter或者forEach函数,可能是因为你的浏览器还不够新,暂时不支持新标准的函数,你可以使用如下方式自己定义:
if (!Array.prototype.forEach) {
Array.prototype.forEach = function (fn, thisObj) {
var scope = thisObj || window;
for (var i = , j = this.length; i < j; ++i) {
fn.call(scope, this[i], i, this);
}
};
}
if (!Array.prototype.filter) {
Array.prototype.filter = function (fn, thisObj) {
var scope = thisObj || window;
var a = [];
for (var i = , j = this.length; i < j; ++i) {
if (!fn.call(scope, this[i], i, this)) {
continue;
}
a.push(this[i]);
}
return a;
};
}
字符串:
// JavaScript Document
//去除左边的空格
String.prototype.LTrim = function()
{
return this.replace(/(^\s*)/g, "");
}
//去除右边的空格
String.prototype.Rtrim = function()
{
return this.replace(/(\s*$)/g, "");
}
//去除前后空格
String.prototype.Trim = function()
{
return this.replace(/(^\s*)|(\s*$)/g, "");
}
//得到左边的字符串
String.prototype.Left = function(len)
{
if(isNaN(len)||len==null)
{
len = this.length;
}
else
{
if(parseInt(len)<||parseInt(len)>this.length)
{
len = this.length;
}
}
return this.substr(,len);
}
//得到右边的字符串
String.prototype.Right = function(len)
{
if(isNaN(len)||len==null)
{
len = this.length;
}
else
{
if(parseInt(len)<||parseInt(len)>this.length)
{
len = this.length;
}
}
return this.substring(this.length-len,this.length);
}
//得到中间的字符串,注意从0开始
String.prototype.Mid = function(start,len)
{
return this.substr(start,len);
}
//在字符串里查找另一字符串:位置从0开始
String.prototype.InStr = function(str)
{
if(str==null)
{
str = "";
}
return this.indexOf(str);
}
//在字符串里反向查找另一字符串:位置0开始
String.prototype.InStrRev = function(str)
{
if(str==null)
{
str = "";
}
return this.lastIndexOf(str);
}
//计算字符串打印长度
String.prototype.LengthW = function()
{
return this.replace(/[^\x00-\xff]/g,"**").length;
}
//是否是正确的IP地址
String.prototype.isIP = function()
{
var reSpaceCheck = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;
if (reSpaceCheck.test(this))
{
this.match(reSpaceCheck);
if (RegExp.$ <= && RegExp.$ >=
&& RegExp.$ <= && RegExp.$ >=
&& RegExp.$ <= && RegExp.$ >=
&& RegExp.$ <= && RegExp.$ >= )
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
//是否是正确的长日期
String.prototype.isLongDate = function()
{
var r = this.replace(/(^\s*)|(\s*$)/g, "").match(/^(\d{,})(-|\/)(\d{,})\(\d{,}) (\d{,}):(\d{,}):(\d{,})$/);
if(r==null)
{
return false;
}
var d = new Date(r[], r[]-,r[],r[],r[],r[]);
return (d.getFullYear()==r[]&&(d.getMonth()+)==r[]&&d.getDate()==r[]&&d.getHours()==r[]&&d.getMinutes()==r[]&&d.getSeconds()==r[]);
}
//是否是正确的短日期
String.prototype.isShortDate = function()
{
var r = this.replace(/(^\s*)|(\s*$)/g, "").match(/^(\d{,})(-|\/)(\d{,})\(\d{,})$/);
if(r==null)
{
return false;
}
var d = new Date(r[], r[]-, r[]);
return (d.getFullYear()==r[]&&(d.getMonth()+)==r[]&&d.getDate()==r[]);
}
//是否是正确的日期
String.prototype.isDate = function()
{
return this.isLongDate()||this.isShortDate();
}
//是否是手机
String.prototype.isMobile = function()
{
return /^{,}[-]{}$/.test(this);
}
//是否是邮件
String.prototype.isEmail = function()
{
return /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-]+((\.|-)[A-Za-z0-]+)*\.[A-Za-z0-]+$/.test(this);
}
//是否是邮编(中国)
String.prototype.isZipCode = function()
{
return /^[\\d]{}$/.test(this);
}
//是否是有汉字
String.prototype.existChinese = function()
{
//[\u4E00-\u9FA5]為漢字﹐[\uFE30-\uFFA0]為全角符號
return /^[\x00-\xff]*$/.test(this);
}
//是否是合法的文件名/目录名
String.prototype.isFileName = function()
{
return !/[\\\/\*\?\|:"<>]/g.test(this);
}
//是否是有效链接
String.prototype.isUrl = function()
{
return /^http[s]?:\/\/([\w-]+\.)+[\w-]+([\w-./?%&=]*)?$/i.test(this);
}
//是否是有效的身份证(中国)
String.prototype.isIDCard = function()
{
var iSum=;
var info="";
var sId = this;
var aCity={:"北京",:"天津",:"河北",:"山西",:"内蒙古",:"辽宁",:"吉林",:"黑龙江",:"上海",:"江苏",:"浙江",:"安徽",:"福建",:"江西",:"山东",:"河南",:"湖北",:"湖南",:"广东",:"广西",:"海南",:"重庆",:"四川",:"贵州",:"云南",:"*",:"陕西",:"甘肃",:"青海",:"宁夏",:"*",:"*",:"香港",:"澳门",:"国外"};
if(!/^\d{}(\d|x)$/i.test(sId))
{
return false;
}
sId=sId.replace(/x$/i,"a");
//非法地区
if(aCity[parseInt(sId.substr(,))]==null)
{
return false;
}
var sBirthday=sId.substr(,)+"-"+Number(sId.substr(,))+"-"+Number(sId.substr(,));
var d=new Date(sBirthday.replace(/-/g,"/"))
//非法生日
if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+) + "-" + d.getDate()))
{
return false;
}
for(var i = ;i>=;i--)
{
iSum += (Math.pow(,i) % ) * parseInt(sId.charAt( - i),);
}
if(iSum%!=)
{
return false;
}
return true;
}
//是否是有效的电话号码(中国)
String.prototype.isPhoneCall = function()
{
return /(^[-]{,}\-[-]{,}$)|(^[-]{,}$)|(^\([-]{,}\)[-]{,}$)|(^{,}[-]{}$)/.test(this);
}
//是否是数字
String.prototype.isNumeric = function(flag)
{
//验证是否是数字
if(isNaN(this))
{
return false;
}
switch(flag)
{
case null: //数字
case "":
return true;
case "+": //正数
return /(^\+?|^\d?)\d*\.?\d+$/.test(this);
case "-": //负数
return /^-\d*\.?\d+$/.test(this);
case "i": //整数
return /(^-?|^\+?|\d)\d+$/.test(this);
case "+i": //正整数
return /(^\d+$)|(^\+?\d+$)/.test(this);
case "-i": //负整数
return /^[-]\d+$/.test(this);
case "f": //浮点数
return /(^-?|^\+?|^\d?)\d*\.\d+$/.test(this);
case "+f": //正浮点数
return /(^\+?|^\d?)\d*\.\d+$/.test(this);
case "-f": //负浮点数
return /^[-]\d*\.\d$/.test(this);
default: //缺省
return true;
}
}
//是否是颜色(#FFFFFF形式)
String.prototype.IsColor = function()
{
var temp = this;
if (temp=="") return true;
if (temp.length!=) return false;
return (temp.search(/\#[a-fA-F0-]{}/) != -);
}
//批量替换,比如:str.ReplaceAll([/a/g,/b/g,/c/g],["aaa","bbb","ccc"])
String.prototype.ReplaceAll=function (A,B) {
var C=this;
for(var i=;i<A.length;i++) {
C=C.replace(A[i],B[i]);
};
return C;
}
//转换成日期
String.prototype.toDate = function()
{
try
{
return new Date(this.replace(/-/g, "\/"));
}
catch(e)
{
return null;
}
}
input控件
//只能输入数字 onafterpaste
<input onkeyup="if(isNaN(value))execCommand('undo')" onafterpaste="if(isNaN(value))execCommand('undo')">
//只能输入数字 onchange
<input name=txt1 onchange="if(/\D/.test(this.value)){alert('只能输入数字');this.value='';}">
//只能输入数字,不能输入小数点 最好的
<input onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')">
//只能输入数字,只能输一位小数点.但是能够粘贴
<input onkeyup="if(isNaN(value))execCommand('undo')" onafterpaste="if(isNaN(value))execCommand('undo')">
//只能输入数字 最严谨
<input type=text t_value="" o_value="" onkeypress="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value" onkeyup="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value" onblur="if(!this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?|\.\d*?)?$/))this.value=this.o_value;else{if(this.value.match(/^\.\d+$/))this.value="http://www.myboker.com/0+this.value;if(this.value.match(/^\.$/))this.value=0;this.o_value=this.value}"">
//只能输入英文和数字,一个小数点也不能输入
<input onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))">
只能输入英文字母和数字和小数点,小数点可以输入多个,不能输入中文
<input onkeyup="value=value.replace(/[^\w\.\/]/ig,'')">
//只能输入汉字:
<input onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))">
//只能输入字母和汉字,最大输入10位
<input onkeyup="value=value.replace(/[\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[\d]/g,''))" maxlength= name="Numbers"> 匹配中文字符的正则表达式: [u4e00-u9fa5]
评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^x00-xff]
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 匹配空白行的正则表达式:ns*r
评注:可以用来删除空白行 匹配HTML标记的正则表达式:< (S*?)[^>]*>.*?|< .*? />
评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力 匹配首尾空白字符的正则表达式:^s*|s*$
评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式 匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*评注:表单验证时很实用 匹配网址URL的正则表达式:[a-zA-z]+://[^s]*评注:网上流传的版本功能很有限,上面这个基本可以满足需求
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{,}$评注:表单验证时很实用
匹配国内电话号码:d{}-d{}|d{}-d{}评注:匹配形式如 - 或 -
匹配腾讯QQ号:[-][-]{,}评注:腾讯QQ号从10000开始
匹配中国邮政编码:[-]d{}(?!d)评注:中国邮政编码为6位数字
匹配身份证:d{}|d{}评注:中国的身份证为15位或18位
匹配ip地址:d+.d+.d+.d+评注:提取ip地址时有用
匹配特定数字:^[-]d*$ //匹配正整数^-[1-9]d*$ //匹配负整数^-?[1-9]d*$ //匹配整数^[1-9]d*|0$ //匹配非负整数(正整数 + 0)^-[1-9]d*|0$ //匹配非正整数(负整数 + 0)^[1-9]d*.d*|0.d*[1-9]d*$ //匹配正浮点数^-([1-9]d*.d*|0.d*[1-9]d*)$ //匹配负浮点数^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$ //匹配浮点数^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$ //匹配非负浮点数(正浮点数 + 0)^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$ //匹配非正浮点数(负浮点数 + 0)评注:处理大量数据时有用,具体应用时注意修正
匹配特定字符串:^[A-Za-z]+$ //匹配由26个英文字母组成的字符串^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串^[a-z]+$ //匹配由26个英文字母的小写组成的字符串^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串^w+$ //匹配由数字、26个英文字母或者下划线组成的字符串
在使用RegularExpressionValidator验证控件时的验证功能及其验证表达式介绍如下:
只能输入数字:“^[-]*$”只能输入n位的数字:“^d{n}$”只能输入至少n位数字:“^d{n,}$”只能输入m-n位的数字:“^d{m,n}$”只能输入零和非零开头的数字:“^(|[-][-]*)$”只能输入有两位小数的正实数:“^[-]+(.[-]{})?$”只能输入有1-3位小数的正实数:“^[-]+(.[-]{,})?$”只能输入非零的正整数:“^+?[-][-]*$”只能输入非零的负整数:“^-[-][-]*$”只能输入长度为3的字符:“^.{}$”只能输入由26个英文字母组成的字符串:“^[A-Za-z]+$”只能输入由26个大写英文字母组成的字符串:“^[A-Z]+$”只能输入由26个小写英文字母组成的字符串:“^[a-z]+$”只能输入由数字和26个英文字母组成的字符串:“^[A-Za-z0-]+$”只能输入由数字、26个英文字母或者下划线组成的字符串:“^w+$”验证用户密码:“^[a-zA-Z]w{,}$”正确格式为:以字母开头,长度在6-18之间,
只能包含字符、数字和下划线。验证是否含有^%&’,;=?$”等字符:“[^%&',;=?$x22]+”只能输入汉字:“^[u4e00-u9fa5],{0,}$”验证Email地址:“^w+[-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$”验证InternetURL:“^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$”验证电话号码:“^((d{3,4})|d{3,4}-)?d{7,8}$”
正确格式为:“XXXX-XXXXXXX”,“XXXX-XXXXXXXX”,“XXX-XXXXXXX”,
“XXX-XXXXXXXX”,“XXXXXXX”,“XXXXXXXX”。验证身份证号(15位或18位数字):“^d{}|d{}$”验证一年的12个月:“^(?[-]|[-])$”正确格式为:“”-“”和“”“”验证一个月的31天:“^((?[-])|((|)[-])||)$”
正确格式为:“”“”和“”“”。
匹配中文字符的正则表达式: [u4e00-u9fa5]匹配双字节字符(包括汉字在内):[^x00-xff]匹配空行的正则表达式:n[s| ]*r匹配HTML标记的正则表达式:/< (.*)>.*|< (.*) />/匹配首尾空格的正则表达式:(^s*)|(s*$)匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*匹配网址URL的正则表达式:http://([w-]+.)+[w-]+(/[w- ./?%&=]*)?
()应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)String.prototype.len=function(){return this.replace([^x00-xff]/g,”aa”).length;}()应用:javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现String.prototype.trim = function(){return this.replace(/(^s*)|(s*$)/g, “”);}()应用:利用正则表达式分解和转换IP地址function IP2V(ip) //IP地址转换成对应数值{re=/(d+).(d+).(d+).(d+)/g //匹配IP地址的正则表达式if(re.test(ip)){return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1}else{throw new Error(”Not a valid IP address!”)}}(4)应用:从URL地址中提取文件名的javascript程序s=”http://www.9499.net/page1.htm”;s=s.replace(/(.*/){0,}([^.]+).*/ig,”$2″) ; //Page1.htm .文本框只能输入数字代码(小数点也不能输入)
<input onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')"> .只能输入数字,能输小数点.
<input onkeyup="if(isNaN(value))execCommand('undo')" onafterpaste="if(isNaN(value))execCommand('undo')">
<input name=txt1 onchange="if(/\D/.test(this.value)){alert('只能输入数字');this.value='';}"> .数字和小数点方法二
<input type=text t_value="" o_value="" onkeypress="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value" onkeyup="if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value" onblur="if(!this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?|\.\d*?)?$/))this.value=this.o_value;else{if(this.value.match(/^\.\d+$/))this.value=0+this.value;if(this.value.match(/^\.$/))this.value=0;this.o_value=this.value}"> .只能输入字母和汉字
<input onkeyup="value=value.replace(/[\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[\d]/g,''))" maxlength= name="Numbers"> .只能输入英文字母和数字,不能输入中文
<input onkeyup="value=value.replace(/[^\w\.\/]/ig,'')"> .只能输入数字和英文<font color="Red">chun</font>
<input onKeyUp="value=value.replace(/[^\d|chun]/g,'')"> .小数点后只能有最多两位(数字,中文都可输入),不能输入字母和运算符号:
<input onKeyPress="if((event.keyCode<48 || event.keyCode>57) && event.keyCode!=46 || /\.\d\d$/.test(value))event.returnValue=false"> .小数点后只能有最多两位(数字,字母,中文都可输入),可以输入运算符号:
<input onkeyup="this.value=this.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')">