正则表达式的用法
在数据录入页面经常会对用户输入的数据进行验证,那么在asp.net中,如何对这些信息进行验证呢?
使用asp.net提供的RegularException Validator控件进行验证,但是有很多时候使用这种方法进行验证时,后台不能触发,也就起不到验证的作用!
因此,当遇见对控件进行验证的时候,我们最好使用正则表达式进行验证,这两次做项目经常用到正则表达式,所以总结一下正则表达式的用法
1.使用正则表达式主要是使用Regex类(需要添加 System.Text.RegularExceptions 命名空间)来进行用户输入数据的验证
Regex类的常用属性及说明
1.CacheSize 获取或设置已编译正则表达式的当前Regex类的缓存中的最大项数
2.Options 返回传入的Regex构造函数的选项
3.RightToLeft 获取一个值,该值指示正则表达式是否从右向左进行搜索
Regex类的常用方法及说明
IsMatch 指示正则表达式在输入字符串是否找到匹配项
Match 在输入字符串中搜索正则表达式的匹配项,并将精确结果作为单个Match对象返回
Matches 在输入的字符串中搜索正则表达式的所有匹配项病返回所有成功的匹配,就像多次调用Match一样
Replace 用指定的替换字符串替换由正则表达式定义的字符模式的所有匹配项
Split 在由正则表达式匹配项定义的位置将输入字符串拆分成一个子字符串数组
常用的正则表达式
1.验证数字
^\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+)?$ //匹配浮点数
2.验证英文字母
^[A-Za-z]+$ //匹配由26个英文字母组成的字符串
^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串
^[a-z]+$ //匹配由26个英文字母的小写组成的字符串
3.验证数字和英文字母
^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串
4.验证数字,字母和下划线
^\w+$ //匹配由数字、26个英文字母或者下划线组成的字符串
5.验证电子邮件
^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$
6.验证网址
1) HTTP://\S+\.\S+
2) http://\S+\.\S+
7.验证邮政编码
\d{6}
8. 验证固定电话号码
\d{3,4}-\d{7,8}
9.验证手机号码
^[1]\d{10}
10.验证日期格式
1)\b(?<year>\d{2,4})/(?<month>\d{1,2})/(?<day>\d{1,2})\b
2)\b(?<year>\d{2,4})-(?<month>\d{1,2})-(?<day>\d{1,2})\b
3)\b(?<year>\d{2,4})年(?<month>\d{1,2})月(?<day>\d{1,2})日s\b
11.验证时间格式
(20|21|22|23|([0-1]?\d)):[0-5]?\d:[0-5]?\d$
12.验证身份证号码
\d{17}[\d|X]|\d{15}
13.验证汉字
^[\u4E00-\u9FA5]{0,}$
14.验证护照号码
(P\d{7})|(G\d{8})
正则表达式的使用方法
1.IsMatch的用法 用来验证输入的数据是否符合要求
if (!Regex.IsMatch(txtCount.Text, @"^[0-9]*[1-9][0-9]*$"))
{
lbWarn.Style.Add("display", "block");
lbWarn.Text = "对不起,数量只能为正整数";
return;
}
2.Match的用法 用来获取输入的字符串中的与正则表达式相匹配的部分
string text = " BJBDN00001";
string pat = @"\D+", ""
Regex r = new Regex(pat);
MatchCollection m = r.Matches(text); //获取text中的数字部分
for (int i = 0; i < m.Count; i++) {s
Response.Write("Match" + (i+1) +":"+ m[i].Value + "<br />");
}