正则表达式用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。 匹配中文字符的正则表达式: [/u4e00-/u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^/x00-/xff] 评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 匹配空白行的正则表达式:/n/s*/r 评注:可以用来删除空白行 匹配HTML标记的正则表达式:<(/S*?)[^>]*>.*?<//1>|<.*? /> 评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力 匹配首尾空白字符的正则表达式:^/s*|/s*$ 评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式 匹配Email地址的正则表达式:/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)* 评注:表单验证时很实用 匹配网址URL的正则表达式:[a-zA-z]+://[^/s]* 评注:网上流传的版本功能很有限,上面这个基本可以满足需求 匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 评注:表单验证时很实用 匹配国内电话号码:/d{3}-/d{8}|/d{4}-/d{7} 评注:匹配形式如 0511-4405222 或 021-87888822 匹配腾讯QQ号:[1-9][0-9]{4,} 评注:腾讯QQ号从10000开始 匹配中国邮政编码:[1-9]/d{5}(?!/d) 评注:中国邮政编码为6位数字 匹配身份证:/d{15}|/d{18} 评注:中国的身份证为15位或18位 匹配ip地址:/d+/./d+/./d+/./d+ 评注:提取ip地址时有用 匹配特定数字: ^[1-9]/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个英文字母或者下划线组成的字符串 匹配时间格式: ^(d)(:)?(d)2(d)$ //短时间 ^(d)(-│/)(d)2(d) (d):(d):(d)$ //长时间 ^(d)(-│/)(d)2(d)$ //短日期 //日期+时间 //只有年和月 //只有小时和分钟 用户名或密码^[a-zA-Z]/w{5,19}$ 6位邮政编码^[0-9]{6}$ 电话号码^[0-9]{3,4}-[0-9]{7,8}$ 18位身份证^[0-9]{6}[12][0-9]{3}[01][0-9][0123][0-9][0-9]{3}[12]$ E-mail地址^.{1,}@.{1,}/.[a-zA-Z]{2,3}$ URL网址^http:///S+/./S+$或^http://([/w-]+/.)+[/w-]+(/[/w-./?%&=]*)? 只包括汉字^[/u4e00-/u9fa5]{1,}$ 检查长度^.{0,20}$ 数字^[-+]?/d+(/./+)?$ 年龄^(1[0-3]/d|/d{1,2}$ 货币^/d+/./d{2}$ 短日期^([1-2]/d{3}|[0-9]{3})-[0-1]*[0-9]-[0-3]*[0-9]$ 短日期(yyyy-MM-DD)格式,基本上把闰年和2月等的情况都考虑进去了: ^((((1[6-9]|[2-9]/d)/d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]/d|3[01]))|(((1[6-9]|[2-9]/d)/d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]/d|30))|(((1[6-9]|[2-9]/d)/d{2})-0?2-(0?[1-9]|1/d|2[0-8]))|(((1[6-9]|[2-9]/d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$ 这是加了时间验证的: ^((((1[6-9]|[2-9]/d)/d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]/d|3[01]))|(((1[6-9]|[2-9]/d)/d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]/d|30))|(((1[6-9]|[2-9]/d)/d{2})-0?2-(0?[1-9]|1/d|2[0-8]))|(((1[6-9]|[2-9]/d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?/d):[0-5]?/d:[0-5]?/d$ posted @ 2007-02-04 15:15 wander 阅读(47) | 评论 (0) | 编辑 收藏
一、验证类 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 所有的表单的值都不能为空 <input οnblur="if(this.value.replace(/^/s+|/s+$/g,'')=='')alert('不能为空!')"> 3.2 多行文本框的值不能为空。 3.3 多行文本框的值不能超过sMaxStrleng 3.4 多行文本框的值不能少于sMixStrleng 3.5 判断单选框是否选择。 3.6 判断复选框是否选择. 3.7 复选框的全选,多选,全不选,反选 3.8 文件上传过程中判断文件类型 4、字符类 4.1 判断字符全部由a-Z或者是A-Z的字字母组成 <input οnblur="if(/[^a-zA-Z]/g.test(this.value))alert('有错')"> 4.2 判断字符由字母和数字组成。 <input οnblur="if(/[^0-9a-zA-Z]/g.test(this.value))alert('有错')"> 4.3 判断字符由字母和数字,下划线,点号组成.且开头的只能是下划线和字母 /^([a-zA-z_]{1})([/w]*)$/g.test(str) 4.4 字符串替换函数.Replace(); 5、浏览器类 5.1 判断浏览器的类型 window.navigat or.appName 5.2 判断ie的版本 window.navigat or.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 复选框的全选,多选,全不选,反选 <f orm name=hrong> <input type=checkbox name=All οnclick="checkAll('mm')">全选<br/> <input type=checkbox name=mm οnclick="checkItem('All')"><br/> <input type=checkbox name=mm οnclick="checkItem('All')"><br/> <input type=checkbox name=mm οnclick="checkItem('All')"><br/> <input type=checkbox name=mm οnclick="checkItem('All')"><br/> <input type=checkbox name=mm οnclick="checkItem('All')"><br/><br/> <input type=checkbox name=All2 οnclick="checkAll('mm2')">全选<br/> <input type=checkbox name=mm2 οnclick="checkItem('All2')"><br/> <input type=checkbox name=mm2 οnclick="checkItem('All2')"><br/> <input type=checkbox name=mm2 οnclick="checkItem('All2')"><br/> <input type=checkbox name=mm2 οnclick="checkItem('All2')"><br/> <input type=checkbox name=mm2 οnclick="checkItem('All2')"><br/> </f orm> <SCRIPT LANGUAGE="java script"> function checkAll(str) { var a = document.getElementsByName(str); var n = a.length; f or (var i=0; i<n; 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; f or (var i=0; i<a.length; i++) { if (!a[i].checked){ all.checked = false; break;} } } else all.checked = false; } </SCRIPT> 3.8 文件上传过程中判断文件类型 <input type=file οnchange="alert(this.value.match(/^(.*)(/.)(.{1,8})$/)[3])"> 画图: <OBJECT id=S style="LEFT: 0px; WIDTH: 392px; TOP: 0px; HEIGHT: 240px" height=240 width=392 classid="clsid:369303C2-D7AC-11D0-89D5-00A0C90833E6"> </OBJECT> <SCRIPT> 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); </SCRIPT> 写注册表: <SCRIPT> var WshShell = WScript.CreateObject("WScript.Shell"); WshShell.RegWrite ("HKCU//Software//ACME//F ortuneTeller//", 1, "REG_BINARY"); WshShell.RegWrite ("HKCU//Software//ACME//F ortuneTeller//MindReader", "Goocher!", "REG_SZ"); var bKey = WshShell.RegRead ("HKCU//Software//ACME//F ortuneTeller//"); WScript.Echo (WshShell.RegRead ("HKCU//Software//ACME//F ortuneTeller//MindReader")); WshShell.RegDelete ("HKCU//Software//ACME//F ortuneTeller//MindReader"); WshShell.RegDelete ("HKCU//Software//ACME//F ortuneTeller//"); WshShell.RegDelete ("HKCU//Software//ACME//"); </SCRIPT> TABLAE相关(客户端动态增加行列) <HTML> <SCRIPT LANGUAGE="JScript"> function numberCells() { var count=0; f or (i=0; i < document.all.mytable.rows.length; i++) { f or (j=0; j < document.all.mytable.rows(i).cells.length; j++) { document.all.mytable.rows(i).cells(j).innerText = count; count++; } } } </SCRIPT> <BODY "numberCells()"> <TABLE id=mytable b order=1> <TR><TH> </TH><TH> </TH><TH> </TH><TH> </TH></TR> <TR><TD> </TD><TD> </TD><TD> </TD><TD> </TD></TR> <TR><TD> </TD><TD> </TD><TD> </TD><TD> </TD></TR> </TABLE> </BODY> </HTML>
常用正则表达式(二)
|
常用正则表达式
最新推荐文章于 2024-08-26 20:42:01 发布
今天用到一些表达式每次去搜索麻烦,所以记录下