技术心得记录:收集一些常用的正则表达式

简介: 技术心得记录:收集一些常用的正则表达式

正则表达式用于字符串处理,表单验证等场合,实用高效,但用到时总是不太把握,以致往往要上网查一番。我将一些常用的表达式收藏在这里,作备忘之用。本贴随时会更新。


匹配中文字符的正则表达式: 【/u4e00-/u9fa5】


匹配双字节字符(包括汉字在内):【^/x00-/xff】


应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)


String.prototype.len=function(){return this.replace(【^/x00-/xff】/g,"aa").length;}


匹配空行的正则表达式:/n【/s| 】/r


匹配HTML标记的正则表达式:/.|/


匹配首尾空格的正则表达式:(^/s)|(/s$)


String.prototype.trim = function()


{


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


}


利用正则表达式分解和转换IP地址:


下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的JavaScript程序:


function IP2V(ip)


{


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


if(re.test(ip))


{


return RegExp.$1Math.pow(255,3))+RegExp.$2Math.pow(255,2))+RegExp.$3255+RegExp.$41


}


else


{


throw new Error("Not a valid IP address!")


}


}


不过上面的程序如果不用正则表达式,而直接用split函数来分解可能更简单,程序如下:


var ip="10.100.20.168"


ip=ip.split(".")


alert("IP值是:"+(ip【0】255255255+ip【1】255255+ip【2】255+ip【3】1))


匹配Email地址的正则表达式:/w+(【-+.】/w+)@/w+(【-.】/w+)/./w+(【-.】/w+)


匹配网址URL的正则表达式:(【/w-】+/.)+【/w-】+(/【/w- ./?%&=】)?


利用正则表达式去除字串中重复的字符的算法程序:【注:此程序不正确,原因见本贴回复】


var s="abacabefgeeii"


var s1=s.replace(/(.)./1/g,"$1")


var re=new RegExp("【"+s1+"】","g")


var s2=s.replace(re,"")


alert(s1+s2) //结果为:abcefgi


我原来在CSDN上发贴寻求一个表达式来实现去除重复字符的方法,最终没有找到,这是我能想到的最简单的实现方法。思路是使用后向引用取出包括重复的字符,再以重复的字符建立第二个表达式,取到不重复的字符,两者串连。这个方法对于字符顺序有要求的字符串可能不适用。


得用正则表达式从URL地址中提取文件名的javascript程序,如下结果为page1


s=""


s=s.replace(/(.//){0,}(【^/.】+)./ig,"$2")


alert(s)


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


用正则表达式限制只能输入中文: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,''))"


正则表达式,相关链接


微软的正则表达式教程(五):选择/编组和后向引用


微软的正则表达式教程(四):限定符和定位符


微软的正则表达式教程(三):字符匹配


微软的正则表达式教程(二):正则表达式语法和优先权顺序


微软的正则表达式教程(一):正则表达式简介


小程序大作为:高级查找/替换、正则表达式练习器、Javascript脚本程序调试器


经典正则表达式


正则表达式,正规表达式,正则表达式匹配,正则表达式语法,模式匹配,正规表达式匹配 javascript正则表达式ASP正则表达式 ASP.net正则表达式 C#正则表达式 JSP正则表达式 PHP正则表达式 VB.Net正则表达式 VBSCript正则表达式编程 delphi正则表达式 jscript


正则表达式 regular expression


正则表达式 RegExp


模式 pattern


匹配 Match


.NET命名空间: System.Text.RegularExpression


补充:


^/d+$  //匹配非负整数(正整数 + 0)


^【0-9】【1-9】【0-9】$  //匹配正整数


^((-/d+)|(0+))$  //匹配非正整数(负整数 + 0)


^-【0-9】【1-9】【0-9】$  //匹配负整数


^-?/d+$    //匹配整数


^/d+(/./d+)?$  //匹配非负浮点数(正浮点数 + 0)


^((【0-9】+/.【0-9】【1-9】【0-9】)|(【0-9】【1-9】【0-9】/.【0-9】+)|(【0-9】【1-9】【0-9】))$  //匹配正浮点数


^((-/d+(/./d+)?)|(0+(/.0+)?))$  //匹配非正浮点数(负浮点数 + 0)


^(-((【0-9】+/.【0-9】【1-9】【0-9】)|(【0-9】【1-9】【0-9】/.【0-9】+)|(【0-9】【1-9】【0-9】)))$  //匹配负浮点数


^(-?/d+)(/./d+)?$  //匹配浮点数


^【A-Za-z】+$  //匹配由26个英文字母组成的字符串


^【A-Z】+$  //匹配由26个英文字母的大写组成的字符串


^【a-z】+$  //匹配由26个英文字母的小写组成的字符串


^【A-Za-z0-9】+$  //匹配由数字和26个英文字母组成的字符串


^/w+$  //匹配由数字、26个英文字母或者下划线组成的字符串


^【/w-】+(/.【/w-】+)@【/w-】+(/.【/w-】+)+$    //匹配email地址


^【a-zA-z】+://匹配(/w+(-/w+))(/.(/w+(-/w+)))(/?/S)?$  //匹配url


利用正则表达式去除字串中重复的字符的算法程序:


var s="abacabefgeeii"


var s1=s.replace(/(.)./1/g,"$1")


var re=new RegExp("【"+s1+"】","g")


var s2=s.replace(re,"")


alert(s1+s2) //结果为:abcefgi


==//代码效果参考:http://hnjlyzjd.com/xl/wz_24964.html

=============================

如果var s = "abacabefggeeii"


结果就不对了,结果为:abeicfgg


正则表达式的能力有限


1.确认有效电子邮件格式


下面的代码示例使用静态 Regex.IsMatch 方法验证一个字符串是否为有效电子邮件格式。如果字符串包含一个有效的电子邮件地址,则 IsValidEmail 方法返回 true,否则返回 false,但不采取其他任何操作。您可以使用 IsValidEmail,在应用程序将地址存储在数据库中或显示在 ASP.NET 页中之前,筛选出包含无效字符的电子邮件地址。


【Visual Basic】


Function IsValidEmail(strIn As String) As Boolean


' Return true if strIn is in valid e-mail format.


Return Regex.IsMatch(strIn, ("^(【/w-/.】+)@((/【【0-9】{1,3}/.【0-9】{1,3}/.【0-9】{1,3}/.)|((【/w-】+/.)+))(【a-zA-Z】{2,4}|【0-9】{1,3})(/】?)$")


End Function


【C#】


bool IsValidEmail(string strIn)


{


// Return true if strIn is in valid e-mail format.


return Regex.IsMatch(strIn, @"^(【/w-/.】+)@((/【【0-9】{1,3}/.【0-9】{1,3}/.【0-9】{1,3}/.)|((【/w-】+/.)+))(【a-zA-Z】{2,4}|【0-9】{1,3})(/】?)$");


}


2.清理输入字符串


下面的代码示例使用静态 Regex.Replace 方法从字符串中抽出无效字符。您可以使用这里定义的 CleanInput 方法,清除掉在接受用户输入的窗体的文本字段中输入的可能有害的字符。CleanInput 在清除掉除 @、-(连字符)和 .(句点)以外的所有非字母数字字符后返回一个字符串。


【Visual Basic】


Function CleanInput(strIn As String) As String


' Replace invalid characters with empty strings.


Return Regex.Replace(strIn, "【^/w/.@-】", "")


End Function


【C#】


String CleanInput(string strIn)


{


// Replace invalid characters with empty strings.


return Regex.Replace(strIn, @"【^/w/.@-】", "");


}


3.更改日期格式


以下代码示例使用 Regex.Replace 方法来用 dd-mm-yy 的日期形式代替 mm/dd/yy 的日期形式。


【Visual Basic】


Function MDYToDMY(input As String) As String


Return Regex.Replace(input,


"/b(?/d{1,2})/(?/d{1,2})/(?/d{2,4})/b",


"${day}-${month}-${year}")


End Function


【C#】


String MDYToDMY(String input)


{


return Regex.Replace(input,


"//b(?//d{1,2})/(?//d{1,2})/(?//d{2,4})//b",


"${day}-${month}-${year}");


}


Regex 替换模式


本示例说明如何在 Regex.Replace 的替换模式中使用命名的反向引用。其中,替换表达式 ${day} 插入由 (?...) 组捕获的子字符串。


有几种静态函数使您可以在使用正则表达式操作时无需创建显式正则表达式对象,而 Regex.Replace 函数正是其中之一。如果您不想保留编译的正则表达式,这将给您带来方便


4.提取 URL 信息


以下代码示例使用 Match.Result 来从 URL 提取协议和端口号。例如,“将返回“http:8080”。


【Visual Basic】


Function Extension(url As String) As String


Dim r As New Regex("^(?


/w+)://【^/】+?(?


:/d+)?/", _


RegexOptions.Compiled)


Return r.Match(url).Result("${proto}${port}")


End Function


【C#】


String Extension(String url)


{


Regex r = new Regex(@"^(?


/w+)://【^/】+?(?


:/d+)?/",


RegexOptions.Compiled);


return r.Match(url).Result("${proto}${port}");


}


  一、正则表达式基础知识


  我们先从简单的开始。假设你要搜索一个包含字符“cat”的字符串,搜索用的正则表达式就是“cat”。如果搜索对大小写不敏感,单词“catalog”、“Catherine”、“sophisticated”都可以匹配。也就是说:


  1.1句点符号


  假设你在玩英文拼字游戏,想要找出三个字母的单词,而且这些单词必须以“t”字母开头,以“n”字母结束。另外,假设有一本英文字典,你可以用正则表达式搜索它的全部内容。要构造出这个正则表达式,你可以使用一个通配符句点符号“.”。这样,完整的表达式就是“t.n”,它匹配“tan”、“ten”、“tin”和“ton”,还匹配“t#n”、“tpn”甚至“tn”,还有其他许多无意义的组合。这是因为句点符号匹配所有字符,包括空格、Tab字符甚至换行符:


  1.2方括号符号


  为了解决句点符号匹配范围过于广泛这一问题,你可以在方括号(“【】”)里面指定看来有意义的字符。此时,只有方括号里面指定的字符才参与匹配。也就是说,正则表达式“t【aeio】n”只匹配“tan”、“Ten”、“tin”和“ton”。但“Toon”不匹配,因为在方括号之内你只能匹配单个字符:


  1.4表示匹配次数的符号


  表一显示了表示匹配次数的符号,这些符号用来确定紧靠该符号左边的符号出现的次数:


  假设我们要在文本文件中搜索美国的社会安全号码。这个号码的格式是999-99-9999。用来匹配它的正则表达式如图一所示。在正则表达式中,连字符(“-”)有着特殊的意义,它表示一个范围,比如从0到9。因此,匹配社会安全号码中的连字符号时,它的前面要加上一个转义字符“/”。


  图一:匹配所有123-12-1234形式的社会安全号码


  假设进行搜索的时候,你希望连字符号可以出现,也可以不出现即,999-99-9999和999999999都属于正确的格式。这时,你可以在连字符号后面加上“?”数量限定符号,如图二所示:


  图二:匹配所有123-12-1234和123121234形式的社会安全号码


  下面我们再来看另外一个例子。美国汽车牌照的一种格式是四个数字加上二个字母。它的正则表达式前面是数字部分“【0-9】{ 4}”,再加上字母部分“【A-Z】{ 2}”。图三显示了完整的正则表达式。


  图三:匹配典型的美国汽车牌照号码,如8836KV


  1.5“否”符号


  “^”符号称为“否”符号。如果用在方括号内,“^”表示不想要匹配的字符。例如,图四的正则表达式匹配所有单词,但以“X”字母开头的单词除外。


  图四:匹配所有单词,但“X”开头的除外


  1.6圆括号和空白符号


  假设要从格式为“June26,1951”的生日日期中提取出月份部分,用来匹配该日期的正则表达式可以如图五所示:


  图五:匹配所有MothDD,YYYY格式的日期


  新出现的“/s”符号是空白符号,匹配所有的空白字符,包括Tab字符。如果字符串正确匹配,接下来如何提取出月份部分呢?只需在月份周围加上一个圆括号创建一个组,然后用OROAPI(本文后面详细讨论)提取出它的值。修改后的正则表达式如图六所示:


  图六:匹配所有MonthDD,YYYY格式的日期,定义月份值为第一个组


  1.7其它符号


  为简便起见,你可以使用一些为常见正则表达式创建的快捷符号。如表二所示:


  表二:常用符号


  例如,在前面社会安全号码的例子中,所有出现“【0-9】”的地方我们都可以使用“/d”。修改后的正则表达式如图七所示:


/------------------------


功能:替换任何空白字符


-------------------------/


function TrimString (strVal)


{


strTmp = strVal + "";


if (strTmp.length == 0)


return (strTmp);


reVal = /^/s/;


strTmp = strTmp.replace (reVal, '');


reVal = //s$/;


return (strTmp.replace (reVal, ''));


}


/------------------------


功能:检测是否是有效数字


-------------------------/


function Check_Num( num )


{


num = ( TrimString( num ) );


if (num.length == 0)


return (false);


return ( Number( num ) );


}


/------------------------


功能:检测是否是有效日期


-------------------------/


function Check_Date (strDate)


{


strDate = (TrimString (strDate));


if (strDate.length == 0)


return (false);


reVal = /^(【1-2】/d{3})【//|/-】(0?【1-9】|10|11|12)【//|/-】(【1-2】?【0-9】|0【1-9】|30|31)$/;


return (reVal.test (strDate));


}


/------------------------


功能:检测是否是有效Email


-------------------------/


function CheckEmail (strEmail)


{


strEmail = (TrimString (strEmail));


if (strEmail.length == 0)


return (false);


reVal = /^【/-!#/$%&'/*/+///.//0-9=/?A-Z/^a-z{|}~】+@【/-!#/$%&'/*/+///.//0-9=/?A-Z/^_a-z{|}~】+(/.【/-!#/$%&'//+///.//0-9=/?A-Z/^_`a-z{|}~】+)+$/;


return (reVal.test (strEmail));


}


/------------------------


功能:检测是否是有效时间


-------------------------/


function Check_Time (strTime)


{


strTime = (TrimString (strTime));


if (strTime.length == 0)


return (false);


reVal = /^((【0-9】|【01】【0-9】|2【0-3】)(:(【0-9】|【0-5】【0-9】)){0,2}|(0?【0-9】|1【0-1】)(:(【0-9】|【0-5】【0-9】)){0,2}/s?【aApP】【mM】)?$/;


return (reVal.test (strTime));


}


/------------------------


功能:检测是否是有效日期特定格式


-------------------------/


function Check_Date_1 (strDate)


{


strDate = (TrimString (strDate));


if (strDate.length == 0)


return (false);


reVal = /^(【1-2】/d{3})【//】(0?【1-9】|10|11|12)【//】(【1-2】?【0-9】|0【1-9】|30|31)$/;


return (reVal.test (strDate));


}


/------------------------


功能:检测是否是有效日期特定格式


-------------------------/


function Check_Date_2 (strDate)


{


strDate = (TrimString (strDate));


if (strDate.length == 0)


return (false);


reVal = /^(【1-2】/d{3})【/-】(0【1-9】|10|11|12)【/-】(【1-2】【0-9】|0【1-9】|30|31)$/;


return (reVal.test (strDate));


}


/--------------------------------------


功能:换行定行


---------------------------------------/


function enter( form, temp )


{


if ( window.event.keyCode == 13 )


{


eval( form + temp + ".focus()" );


eval( form + temp + ".select()" );


}


else


return (false);


}


/--------------------------------------


功能:检查字符串长度


---------------------------------------/


function ByteString (strVal)


{


nLen = 0;


for (i = 0; i < strVal.length; i ++)


{


if (strVal.charCodeAt (i) > 255)


nLen += 2;


else


nLen ++;


};


return (nLen);


}


/--------------------------------------


功能:按要求截取字符串长度


---------------------------------------/


function SubString(strVal,nStrLen)


{


nLen = 0;


nTemp = 0;


for (i = 0; i < strVal.length; i ++)


{


if (strVal.charCodeAt (i) > 255)


nLen += 2;


else


nLen ++;


if(nLen <= nStrLen)


nTemp = i;


else


break;


};


return(strVal.substr(0,nTemp+1));


}


/------------------------


功能:检测密码,密码只能由英文字母、数字、减号、下划线、$、#、、(和)构成,且首位必须是英文字母


-------------------------/


function CheckPass( strPass )


{


strPass = ( TrimString( strPass ) );


if (strPass.length == 0)


return (false);


reVal = /^【a-zA-Z】{1}【a-zA-Z0-9-$#()】{0,29}$/;


return ( reVal.test (strPass) );


}


这是所有的,不过是PHP的,你自己转换一下吧~~


# re: 正则表达式 2005-02-28 00:59 yongsheng


^(((19)|(20))/d{2})(((((-|/)0?)|0)【1-9】)|((-|/)?1【0-2】))((((((-|/)0?)|0)【1-9】)|((-|/)?【1-2】【0-9】))|((-|/)?3【0-1】))$


2004-1-1格式


# re: 正则表达式 2005-03-07 14:33 yongsheng


一、验证类


1、数字验证内


1.1 整数


1.2 大于0的整数 (用于传来的ID的验证)


1.3 负整数的验证


1.4 整数不能大于iMax


1.5 整数不能小于iMin


2、时间类


2.1 短时间,形如 (13:04:06)


2.2 短日期,形如 (2003-12-05)


2.3 长时间,形如 (2003-12-05 13:04:06)


2.4 只有年和月。形如(2003-05,或者2003-5)


2.5 只有小时和分钟,形如(12:03)


3、表单类


3.1 所有的表单的值都不能为空


3.2 多行文本框的值不能为空。


3.3 多行文本框的值不能超过sMaxStrleng


3.4 多行文本框的值不能少于sMixStrleng


3.5 判断单选框是否选择。


3.6 判断复选框是否选择.


3.7 复选框的全选,多选,全不选,反选


3.8 文件上传过程中判断文件类型


4、字符类


4.1 判断字符全部由a-Z或者是A-Z的字字母组成


4.2 判断字符由字母和数字组成。


4.3 判断字符由字母和数字,下划线,点号组成.且开头的只能是下划线和字母


4.4 字符串替换函数.Replace();


5、浏览器类


5.1 判断浏览器的类型


5.2 判断ie的版本


5.3 判断客户端的分辨率


6、结合类


6.1 email的判断。


6.2 手机号码的验证


6.3 身份证的验证


二、功能类


1、时间与相关控件类


1.1 日历


1.2 时间控件


1.3 万年历


1.4 显示动态显示时钟效果(文本,如OA中时间)


1.5 显示动态显示时钟效果 (图像,像手表)


2、表单类


2.1 自动生成表单


2.2 动态添加,修改,删除下拉框中的元素


2.3 可以输入内容的下拉框


2.4 多行文本框中只能输入iMax文字。如果多输入了,自动减少到iMax个文字(多用于短信发送)


3、打印类


3.1 打印控件


4、事件类


4.1 屏蔽右键


4.2 屏蔽所有功能键


4.3 --> 和<-- F5 F11,F9,F1


4.4 屏蔽组合键ctrl+N


5、网页设计类


5.1 连续滚动的文字,图片(注意是连续的,两段文字和图片中没有空白出现)


5.2 html编辑控件类


5.3 颜色选取框控件


5.4 下拉菜单


5.5 两层或多层次的下拉菜单


5.6 仿IE菜单的按钮。(效果如rongshuxa.com的导航栏目)


5.7 状态栏,title栏的动态效果(例子很多,可以研究一下)


5.8 双击后,网页自动滚屏


6、树型结构。


6.1 asp+SQL版


6.2 asp+xml+sql版


6.3 Java+sql或者java+sql+xml


7、无边框效果的制作


8、连动下拉框技术


9、文本排序


一、验证类


1、数字验证内


1.1 整数


/^(-|/+)?/d+$/.test(str)


1.2 大于0的整数 (用于传来的ID的验证)


/^/d+$/.test(str)


1.3 负整数的验证


/^-/d+$/.test(str)


2、时间类


2.1 短时间,形如 (13:04:06)


function isTime(str)


{


var a = str.match(/^(/d{1,2})(:)?(/d{1,2})/2(/d{1,2})$/);


if (a == null) {alert('输入的参数不是时间格式'); return false;}


if (a【1】>24 || a【3】>60 || a【4】>60)


{


alert("时间格式不对");


return false


}


return true;


}


2.2 短日期,形如 (2003-12-05)


function strDateTime(str)


{


var r = str.match(/^(/d{1,4})(-|//)(/d{1,2})/2(/d{1,2})$/);


if(r==null)return false;


var d= new Date(r【1】, r【3】-1, r【4】);


return (d.getFullYear()==r【1】&&(d.getMonth()+1)==r【3】&&d.getDate()==r【4】);


}


2.3 长时间,形如 (2003-12-05 13:04:06)


function strDateTime(str)


{


var reg = /^(/d{1,4})(-|//)(/d{1,2})/2(/d{1,2}) (/d{1,2}):(/d{1,2}):(/d{1,2})$/;


var r = str.match(reg);


if(r==null)return false;


var d= new Date(r【1】, r【3】-1,r【4】,r【5】,r【6】,r【7】);


return (d.getFullYear()==r【1】&&(d.getMonth()+1)==r【3】&&d.getDate()==r【4】&&d.getHours()==r【5】&&d.getMinutes()==r【6】&&d.getSeconds()==r【7】);


}


2.4 只有年和月。形如(2003-05,或者2003-5)


2.5 只有小时和分钟,形如(12:03)


3、表单类


3.1 所有的表单的值都不能为空


3.2 多行文本框的值不能为空。


3.3 多行文本框的值不能超过sMaxStrleng


3.4 多行文本框的值不能少于sMixStrleng


3.5 判断单选框是否选择。


3.6 判断复选框是否选择.


3.7 复选框的全选,多选,全不选,反选


3.8 文件上传过程中判断文件类型


4、字符类


4.1 判断字符全部由a-Z或者是A-Z的字字母组成


4.2 判断字符由字母和数字组成。


4.3 判断字符由字母和数字,下划线,点号组成.且开头的只能是下划线和字母


/^(【a-zA-z_】{1})(【/w】)$/g.test(str)


4.4 字符串替换函数.Replace();


5、浏览器类


5.1 判断浏览器的类型


window.navigator.appName


5.2 判断ie的版本


window.navigator.appVersion


5.3 判断客户端的分辨率


window.screen.height; window.screen.width;


6、结合类


6.1 email的判断。


function ismail(mail)


{


return(new RegExp(/^/w+((-/w+)|(/./w+))/@【A-Za-z0-9】+((/.|-)【A-Za-z0-9】+)/.【A-Za-z0-9】+$/).test(mail));


}


6.2 手机号码的验证


6.3 身份证的验证


function isIdCardNo(num)


{


if (isNaN(num)) {alert("输入的不是数字!"); return false;}


var len = num.length, re;


if (len == 15)


re = new RegExp(/^(/d{6})()?(/d{2})(/d{2})(/d{2})(/d{3})$/);


else if (len == 18)


re = new RegExp(/^(/d{6})()?(/d{4})(/d{2})(/d{2})(/d{3})(/d)$/);


else {alert("输入的数字位数不对!"); return false;}


var a = num.match(re);


if (a != null)


{


if (len==15)


{


var D = new Date("19"+a【3】+"/"+a【4】+"/"+a【5】);


var B = D.getYear()==a【3】&&(D.getMonth()+1)==a【4】&&D.getDate()==a【5】;


}


else


{


var D = new Date(a【3】+"/"+a【4】+"/"+a【5】);


var B = D.getFullYear()==a【3】&&(D.getMonth()+1)==a【4】&&D.getDate()==a【5】;


}


if (!B) {alert("输入的身份证号 "+ a【0】 +" 里出生日期不对!"); return false;}


}


return true;


}


3.7 复选框的全选,多选,全不选,反选


全选


全选


function checkAll(str)


{


var a = document.getElementsByName(str);


var n = a.length;


for (var i=0; i

a【i】.checked = window.event.srcElement.checked;


}


function checkItem(str)


{


var e = window.event.srcElement;


var all = eval("document.hrong."+ str);


if (e.checked)


{


var a = document.getElementsByName(e.name);


all.checked = true;


for (var i=0; i

{


if (!a【i】.checked){ all.checked = false; break;}


}


}


else all.checked = false;


}


3.8 文件上传过程中判断文件类型


画图:



id=S


style="LEFT: 0px; WIDTH: 392px; TOP: 0px; HEIGHT: 240px"


height=240


width=392


classid="clsid:369303C2-D7AC-11D0-89D5-00A0C90833E6">


S.DrawingSurface.ArcDegrees(0,0,0,30,50,60);


S.DrawingSurface.ArcRadians(30,0,0,30,50,60);


S.DrawingSurface.Line(10,10,100,100);


写注册表:


var WshShell = WScript.CreateObject("WScript.Shell");


WshShell.RegWrite ("HKCU//Software//ACME//FortuneTeller//", 1, "REG_BINARY");


WshShell.RegWrite ("HKCU//Software//ACME//FortuneTeller//MindReader", "Goocher!", "REG_SZ");


var bKey = WshShell.RegRead ("HKCU//Software//ACME//FortuneTeller//");


WScript.Echo (WshShell.RegRead ("HKCU//Software//ACME//FortuneTeller//MindReader"));


WshShell.RegDelete ("HKCU//Software//ACME//FortuneTeller//MindReader");


WshShell.RegDelete ("HKCU//Software//ACME//FortuneTeller//");


WshShell.RegDelete ("HKCU//Software//ACME//");


TABLAE相关(客户端动态增加行列)


function numberCells() {


var count=0;


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


for (j=0; j < document.all.mytable.rows(i).cells.length; j++) {


document.all.mytable.rows(i).cells(j).innerText = count;


count++;


}


}


}


1.身份证严格验证:


var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}


function cidInfo(sId){


var iSum=0


var info=""


if(!/^/d{17}(/d|x)$/i.test(sId))return false;


sId=sId.replace(/x$/i,"a");


if(aCity【parseInt(sId.substr(0,2))】==null)return "Error:非法地区";


sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2));


var d=new Date(sBirthday.replace(/-/g,"/"))


if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))return "Error:非法生日";


for(var i = 17;i>=0;i --) iSum += (Math.pow(2,i) % 11) parseInt(sId.charAt(17 - i),11)


if(iSum%11!=1)return "Error:非法证号";


return aCity【parseInt(sId.substr(0,2))】+","+sBirthday+","+(sId.substr(16,1)%2?"男":"女")


}


document.write(cidInfo("380524198002300016"),"


");


document.write(cidInfo("340524198002300019"),"


")


document.write(cidInfo("340524197711111111"),"


")


document.write(cidInfo("34052419800101001x"),"


");


2.验证IP地址


function isip(s){


var check=function(v){try{return (v=0)}catch(x){return false}};


var re=s.split(".")


return (re.length==4)?(check(re【0】) && check(re【1】) && check(re【2】) && check(re【3】)):false


}


var s="202.197.78.129";


alert(isip(s))


3.加sp1后还能用的无边框窗口!!


Chromeless Window


/--- Special Thanks For andot ---/


/


This following code are designed and w

相关文章
|
6月前
|
机器学习/深度学习 前端开发 Windows
【夯实技术基本功】「底层技术原理体系」全方位带你认识和透彻领悟正则表达式(Regular Expression)的开发手册(正则符号深入解析 )
【夯实技术基本功】「底层技术原理体系」全方位带你认识和透彻领悟正则表达式(Regular Expression)的开发手册(正则符号深入解析 )
77 0
|
6月前
|
XML JSON 监控
Java语言中的正则表达式技术详解
Java语言中的正则表达式技术详解
|
5月前
|
机器学习/深度学习 Unix Java
程序技术好文:正则表达式详解
程序技术好文:正则表达式详解
74 0
|
5月前
|
机器学习/深度学习 JavaScript 前端开发
技术心得记录:正则表达式(c#)
技术心得记录:正则表达式(c#)
25 0
|
6月前
|
存储 机器学习/深度学习 缓存
【夯实技术基本功】「底层技术原理体系」全方位带你认识和透彻领悟正则表达式(Regular Expression)的开发手册(正则表达式定义 )
【夯实技术基本功】「底层技术原理体系」全方位带你认识和透彻领悟正则表达式(Regular Expression)的开发手册(正则表达式定义 )
49 0
|
Python
Python实用技术一:正则表达式
用以表示“此处必须出现一个某某范围内的字符”,或者“此处必须出现一一个字符,但不可以是某某范围内的字符” ,但不可以十某某范围内的字符。
114 0
Python实用技术一:正则表达式
|
数据采集 自然语言处理 JavaScript
通用技术 | 正则表达式
正则表达式是一种通用的技术,它不仅适用于开发人员,对于非开发人员来说,掌握这项技术同样可以提高日常的工作效率。它的覆盖范围之广泛,可以用"无所不至"形容,linux命令行、文本搜索、开发、爬虫等。本文就来详细介绍一下正则表达式的使用。
通用技术 | 正则表达式
|
JavaScript 前端开发
JavaScript 技术篇-js正则表达式匹配中英文数字
JavaScript 技术篇-js正则表达式匹配中英文数字
496 0
JavaScript 技术篇-js正则表达式匹配中英文数字
|
JavaScript 前端开发
JavaScript 技术篇-js正则表达式匹配字符串左右两边是否包含空格
JavaScript 技术篇-js正则表达式匹配字符串左右两边是否包含空格
607 0
JavaScript 技术篇-js正则表达式匹配字符串左右两边是否包含空格
|
5月前
|
数据库 Python
Python网络数据抓取(8):正则表达式
Python网络数据抓取(8):正则表达式
54 2