当前位置:文档之家› 学习资料

学习资料

一、过滤页面html输出

在.net 中过滤页面即将输出的所有html,从而改变一定html代码,具体的实现方法就是重写页面的Render 方法

具体代码实现如下:

其作用如下:

1. 可以用作缓存,替代outputcache ,在Render 中,把页面信息放到Cache 里面,然后再在Page_Load 里面,从缓存取出来,这样比outputcache 实用,况且可以根据用户信息定制化

2. 过滤页面html

3. .net 过滤页面html输出

4. global.asax 页面输出

5. 过滤html

6. 替换html

二、html色值

三、获取键盘的任一个按键值

function keyDown()

{

var keycode =event.keyCode;

var keychar=String.fromCharCode(keycode);

alert('ASCII='+keycode+'\nKeyChar='+keychar); }

document.onkeydown=keyDown;

四、正则表达式

电话号码正则表达式

(支持手机号码,3-4位区号,7-8位直播号码,1-4位分机号)

((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d {7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$)

匹配格式:

11位手机号码

3-4位区号,7-8位直播号码,1-4位分机号

如:12345678901、1234-12345678-1234

匹配中文字符的正则表达式:[\u4e00-\u9fa5]

评注:匹配中文还真是个头疼的事,有了这个表达式就好办了

匹配双字节字符(包括汉字在内):[^\x00-\xff]

评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)匹配空白行的正则表达式:\n\s*\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_]{4,15}$

评注:表单验证时很实用匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}

评注:匹配形式如0511-******* 或021-********匹配腾讯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+$"//非负整数(正整数+ 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

/^13\d{9}$/gi手机号正则表达式

public static bool IsValidMobileNo(string MobileNo)

{

const string regPattern = @"^(130|131|132|133|134|135|136|137|138|139)\d{8}$";

return Regex.IsMatch(MobileNo, regPattern);

}

正则表达式--验证手机号码:13[0-9]{9}

实现手机号前带86或是+86的情况:^((\+86)|(86))?(13)\d{9}$

电话号码与手机号码同时验证:(^(\d{3,4}-)?\d{7,8})$|(13[0-9]{9})

提取信息中的网络链接:(h|H)(r|R)(e|E)(f|F) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?

提取信息中的邮件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

提取信息中的图片链接:(s|S)(r|R)(c|C) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?

提取信息中的IP地址:(\d+)\.(\d+)\.(\d+)\.(\d+)

提取信息中的中国手机号码:(86)*0*13\d{9}

提取信息中的中国固定电话号码:(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8}

提取信息中的中国电话号码(包括移动和固定电话):(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}

提取信息中的中国邮政编码:[1-9]{1}(\d+){5}

提取信息中的中国身份证号码:\d{18}|\d{15}

提取信息中的整数:\d+

提取信息中的浮点数(即小数):(-?\d*)\.?\d+

提取信息中的任何数字:(-?\d*)(\.\d+)?

提取信息中的中文字符串:[\u4e00-\u9fa5]*

提取信息中的双字节字符串(汉字):[^\x00-\xff]*

手机号为什么以13开头2008-02-16 22:06大家都知道以前电信移动邮政还没有分家阿,邮电资源是邮电部(现信息产业部)统一调度的。在分配号段的时候,做了一些细致的规划,大体是这样:

10开头,电信服务号码,如103国际半自动挂号,108国际对方付费电话,10000中国电信服务中心,10010中国联通服务中心,10050中国铁通服务中心,10060中国网通服务中心,

10070中国卫通服务中心,10086中国移动服务中心等等

11开头,赋予特种服务号码,如110匪警,111电信内部测试,112报修,113、115国内人工长途挂号,114查号台,116国内人工长途查询,117报时,119火警等

12开头,赋予民用特殊号码,如120(医院),121(天气预报),122交通事故告警,12312保护知识产权举报中心,12315消费投诉热线,12319城建服务,12348法律咨询,12358价格举报中心,12365质量监督,12366纳税服务,12369环境保护投诉,126、127、128、129寻呼台(BP机时代)

所以分配到手机用户时,以13开始做号段。后来分配130~133为联通,134~139为移动,138********中国移动充值。

日前新推出号段:以153开始做号段分给联通,以158、159开始做号段分给了移动。

以188开始做号段为TD-SCDMA制式的3G手机,将陆续有预先挑选出来的测试用户使用以“188”为开头的手机号码,在包括北京、青岛、厦门、保定等在内的几大城市中率先试用TD-SCDMA网络。

(查看日志《用号码以“188”开头的TD-SCDMA制式手机体验读邮件、看手机电视等3G 业务》)

其他的特殊号段号码有:

16,声讯类,如160中国电信工人信息服务接入码,166语音信箱业务,167吉通计算机互联网业务接入码,168声讯服务,中国电信公众多媒体网接入码等

17,长途电话服务,如170国内长途全自动话费查询台,173国内立接制长途半自动挂号台,176国内长途半自动查询台,177国内长途半自动班长台,179IP语音服务接入码等

18,部分服务台,如180邮政服务,184邮政编码查询接入码,185国家邮政局电话信息服务接入码,186移动服务中心,188固定电话交费台,189中国电信业务受理特服台等(大多已停用,或换新号)

19,寻呼接入,191联通无线电人工寻呼接入码,192联通无线电自动寻呼接入码等等

20,30,电话卡服务

另外,8、9开头的号段部分也作电信及民用服务号码

95,金融及民用服务号码,95501深圳发展银行,95502永安财产保险,95505天安保险,95508广州发展银行,95511中国平安人寿,95512中国平安产险,95515合众人寿,95516中国银联,95518中国人民保险,95519中国人寿保险,95522泰康人寿,95528浦东发展银行,95533中国建设银行,95555招商银行,95556中信银行,95559交通银行,95561兴业

银行,95566中国银行,95567中国新华人寿,95568中国民生银行,95569安邦财产保险,95577华夏银行,95585中国联合财保,95588中国工商银行,95590中国大地财产保险,95595光大银行,95596民生人寿保险,95599中国农业银行,95598供电服务,96100民政服务,96118旅游投诉,96178廉政投诉,96198农业信用联社,96310城管执法,95105366中铁快运,95105768海康人寿

400,企业主被叫分摊付费电话业务,是一项由固网运营商推出的为被叫客户提供一个全国范围内的唯一400号码,并把对该号码的呼叫接至被叫客户事先规定目的地(电话号码或呼叫中心)的全国性智能网业务。企业申请了400业务,无疑将有效提高企业的市场形象,但是如果背后没有呼叫中心作为支撑,400也就只是一个将来电转移的号码,其价值也大大降低。如:4006789000宅急送4008108000 DHL快递4008111111顺丰速运4008208388 UPS快递4008861888联邦快递4008888400上海证券交易所

800,为受话人集中付费业务,它的主要特征是由被叫方(企业)集中支付话费,而主叫方(客户)不支付任何费用。800电话的使用充分体现了企业“客户至上”的先进理念,它在国外的使用已是十分普遍。

以上号码均作分配,内容太多未详细列出,部分号码目前已经升级,如电信服务台,天气预报,邮政服务台等等

010*********

01,02开头的是3个开头,其余的是4个开头

01x 北京

02x 广州,上海,天津,重庆,沈阳,南京,,武汉,成都

03xx 河北,河南,山西

04xx 辽宁,吉林,黑龙江,内蒙古

05xx 江苏,山东,安徽,浙江,福建

06xx 这个保留?

07xx 江西,广西,湖北

08xx 四川,贵州

09xx 甘肃青海新疆,陕西

1.忽略非数字的(只留下数字)

2.判断前两个都是0,或86开头,且大于11位,为国际编码,国际编码后如果是0,到第4步

3.第一个是0,第二个非0,为国内编码,

4.根据上述我提供的得到身份

区号+座机号码+分机号码:regexp="^(0[0-9]{2,3}\-)?([2-9][0-9]{6,7})+(\-[0-9]{1,4})?$"

手机(中国移动手机号码):regexp="^((\(\d{3}\))|(\d{3}\-))?13[456789]\d{8}|15[89]\d{8}"

所有手机号码:regexp="^((\(\d{3}\))|(\d{3}\-))?13[0-9]\d{8}|15[89]\d{8}"(新添加了158,159两个号段)

正则表达式允许输入汉字,数字,标点符号!最多输入200个字符,但不允许输入特殊字符? 是用在那个环境下的?js的如下:

^([\u4e00-\u9fa5]|[0-9]|[,]|[,]){0,200}$

标点符号要添加则如添加“

^([\u4e00-\u9fa5]|[0-9]|[,]|[,]|[“]){0,200}$

常用正则表达式大全

常用正则表达式大全!(例如:匹配中文、匹配html)

^\d+(\.{0,1}\d+){0,1}$ 非负数

匹配中文字符的正则表达式:[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_]{4,15}$

评注:表单验证时很实用

匹配国内电话号码:d{3}-d{8}|d{4}-d{7}

评注:匹配形式如0511-******* 或021-********

匹配腾讯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个英文字母或者下划线组成的字符串

在使用RegularExpressionValidator验证控件时的验证功能及其验证表达式介绍如下: 只能输入数字:“^[0-9]*$”

只能输入n位的数字:“^d{n}$”

只能输入至少n位数字:“^d{n,}$”

只能输入m-n位的数字:“^d{m,n}$”

只能输入零和非零开头的数字:“^(0|[1-9][0-9]*)$”

只能输入有两位小数的正实数:“^[0-9]+(.[0-9]{2})?$”

只能输入有1-3位小数的正实数:“^[0-9]+(.[0-9]{1,3})?$”

只能输入非零的正整数:“^+?[1-9][0-9]*$”

只能输入非零的负整数:“^-[1-9][0-9]*$”

只能输入长度为3的字符:“^.{3}$”

只能输入由26个英文字母组成的字符串:“^[A-Za-z]+$”

只能输入由26个大写英文字母组成的字符串:“^[A-Z]+$”

只能输入由26个小写英文字母组成的字符串:“^[a-z]+$”

只能输入由数字和26个英文字母组成的字符串:“^[A-Za-z0-9]+$”

只能输入由数字、26个英文字母或者下划线组成的字符串:“^w+$”

验证用户密码:“^[a-zA-Z]w{5,17}$”正确格式为:以字母开头,长度在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{15}|d{}18$”

验证一年的12个月:“^(0?[1-9]|1[0-2])$”正确格式为:“01”-“09”和“1”“12”

验证一个月的31天:“^((0?[1-9])|((1|2)[0-9])|30|31)$”

正确格式为:“01”“09”和“1”“31”。

匹配中文字符的正则表达式:[u4e00-u9fa5]

匹配双字节字符(包括汉字在内):[^x00-xff]

匹配空行的正则表达式:n[s| ]*r

匹配HTML标记的正则表达式:/<(.*)>.*|<(.*) />/

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

匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*

匹配网址URL的正则表达式:http://([w-]+.)+[w-]+(/[w- ./?%&=]*)?

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

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

(2)应用:javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现

String.prototype.trim = function()

{

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

}

(3)应用:利用正则表达式分解和转换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="https://www.doczj.com/doc/b51084853.html,/page1.htm";

s=s.replace(/(.*/){0,}([^.]+).*/ig,"$2") ;//Page1.htm

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

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

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

"onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^uFF00-uFF FF]/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,'

五、winform对Excel的操作

public void DataToExcel(DataTable dt)

2 {

3 try

4 {

5 if (dt == null) return;

6

7 Microsoft.Office.Interop.Excel.ApplicationClass myExcel = new Microsoft.Office.Interop.Excel.ApplicationClass();

8 Microsoft.Office.Interop.Excel.Workbook xBk; //工作薄

9 Microsoft.Office.Interop.Excel.Worksheet xSt; //工作Sheet

10

11 xBk = myExcel.Workbooks.Add(true);

12 xSt = (Microsoft.Office.Interop.Excel.Worksheet)xBk.ActiveSheet;

13

14 myExcel.Visible = true;

15

16 for (int i = 1; i <= dt.Columns.Count; ++i)

17 {

18 xSt.Cells[1, i] = dt.Columns[i - 1].ColumnName;

19 }

20

21 for (int i = 2; i <= dt.Rows.Count + 1; ++i)

22 {

23 for (int j = 1; j <= dt.Columns.Count; ++j)

24 {

25 xSt.Cells[i, j] = dt.Rows[i - 2][j - 1].ToString();

26 }

27 }

28

29 for (int i = 1; i <= dt.Columns.Count; ++i)

30 {

31 Microsoft.Office.Interop.Excel.Range selectRange = xSt.get_Range(xSt.Cells[1, i], xSt.Cells[dt.Rows.Count + 1, i]);

32 selectRange.Columns.AutoFit();

33 }

34 }

35 catch

36 {

37

38 }

39 }

方法2:

View Code

1 public void dataToExcel(DataTable dt)

2 {

3

4 SaveFileDialog dlg = new SaveFileDialog();

5 dlg.Filter = "Execl files (*.xls)|*.xls";

6 dlg.FilterIndex = 0;

7 dlg.RestoreDirectory = true;

8 dlg.Title = "保存为Excel文件";

9 dlg.FileName = DateTime.Now.Ticks.ToString().Trim();

10

11 if (dlg.ShowDialog() == DialogResult.OK)

12 {

13 Stream myStream = dlg.OpenFile();

14 StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0));

15 string columnTitle = "";

16 try

17 {

18 //写入列标题

19 for (int i = 0; i < dt.Columns.Count; i++)

20 {

21 if (i > 0)

22 {

23 columnTitle += "\t";

24 }

25 columnTitle += dt.Columns[i].ColumnName;

26 }

27 sw.WriteLine(columnTitle);

28

29 //写入列内容

30 for (int j = 0; j < dt.Rows.Count; j++)

31 {

32 string columnValue = "";

33 for (int k = 0; k < dt.Columns.Count; k++)

34 {

35 if (k > 0)

36 {

37 columnValue += "\t";

38 }

39 if (dt.Rows[j][k].ToString() == "")

40 columnValue += "null";

41 else

42 columnValue += dt.Rows[j][k].ToString().Trim();

43 }

44 sw.WriteLine(columnValue);

45 }

46 }

47 catch (Exception e)

48 {

49 MessageBox.Show(e.ToString());

50 }

51 finally

52 {

53 sw.Close();

54 myStream.Close();

55 }

56 }

57 }

58 }

显然第二种方法要比第一种方法执行速度要快得多,但是第二种方法保存的文件不是真正的EXCEL文件,而用流写的一定格式的类EXCEL文件。

相关主题
文本预览
相关文档 最新文档