正则表达式中的每一个元字符只能匹配一个字符,如果需匹配多个,则需使用限定符来表示字符自身出现的次数。
1、“?”:字符出现0次或者1次,如^ab?$,可以匹配字符串ab,a
2、“ * ”:指定字符至少出现0次,如^ab*$,可以匹配的字符a,ab,abb,abbb……
3、“+”:限定指定的字符至少出现1次,如^ab+$,ab,abb,abbb……
4、“{n}”:字符出现的次数,^ab{3}$,abbb
5、“{n,}”:指定字符至少出现的次数,^ab{3,}$,abbb,abbbb……
6、“{n,m}”:字符出现的次数在n和m之间
转义字符“\”,如“\.”表示字符.。
比较实用的正则表达式:
1、验证输入的数是否为大于0的整数:@"^\+?[1-9][0-9]*$"
2、检查字符串中重复出现的次数:01.aspx页面添加一个textbox和一个button按钮,点击button触发一下事件。
System.Text.RegularExpressions.MatchCollection match = System.Text.RegularExpressions.Regex.Matches
(TextBox1.Text, @"\b(?<word>\w+)\s+(\k<word>)\b",
System.Text.RegularExpressions.RegexOptions.Compiled |
System.Text.RegularExpressions.RegexOptions.IgnoreCase);
if(match.Count!=0){
foreach(System.Text.RegularExpressions.Match m in match){
string word = m.Groups["word"].Value;
Response.Write("<script>window.alert('重复的词:"+word.ToString()+"')</script>");
}
}
3、用来拆分字符串:02.aspx页面添加两个textbox空间,分别显示拆分前的字符串和拆分后的字符,添加一个button事件。
if(Page.IsValid){
string[] p_str = System.Text.RegularExpressions.Regex.Split(TextBox1.Text, "[1-9]");
foreach (string s in p_str)
{
TextBox2.Text += s;
}
}
可以将abgfhdjf56733hdjf546,截取成abgfhdjfhdjf
4、验证输入的是不是汉字:用IsMatch进行判断(以下也均用此判断),正则表达式为 @"^[\u4e00-\u9fa5]{1,}$"
5、验证是否为E-mail格式:@"^(([\w\.]+)@(([[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))|((\w+\.?)+)@([a-zA-Z]{2,4}|[0-9]{1,3})(\.[a-zA-Z]{2,4}))$"
6、验证IP地址:定义一个num = @"(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)",再将num放在对应的地方("^" + num + "\\." + num + "\\." + num + "\\." + num + "$")
7、验证是否为URL格式:@"http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?"