C#正则表达式练习题
1.完成手机号的验证:
while (true)
{
* 以1为开头;
2--第二位可为3,4,5,7,8,中的任意一位;
3--最后以0-9的9个整数结尾。
Console.WriteLine("请输入合法的手机号");
//手机号的正确格式:11位,纯数字,开头不能为0
string sj = Console.ReadLine();
//按照上面规则写正则
string pattern =@"^1[3578]\d{9}$";
if (Regex.IsMatch(sj, pattern))
{
Console.WriteLine("合法");
}
else
{
Console.WriteLine("不合法");
}
2.完成合法邮箱验证:
while (true)
{
/*@之前必须有内容且只能是字母(大小写)、数字、下划线(_)、
@和最后一个点(.)之间必须有内容且只能是字母(大小写)、数字、点(.)、减号(-),且两个点不能挨着
最后一个点(.)之后必须有内容且内容只能是字母(大小写)、数字且长度为大于等于2个字节,小于等于6个字节
*/
//验证邮箱
string emailPattern = @"\w+@\w+.[a-z]{3}$";
string emailPattern = @"^\w+([-+.]\w+)*@\w+ ([-.]\w+)*\.\w+([-.]\w+)*$";
while (true)
{
Console.WriteLine("请输入邮箱");
string emailInput = Console.ReadLine();
bool match = Regex.IsMatch(emailInput, emailPattern);
if (match)
{
Console.WriteLine("输入正确");
}
else
{
Console.WriteLine("输入格式有误");
}
}
3.完成IP地址验证:
while (true)
{
/*
* IPv4必须满足以下四条规则:
任何一个1位或者两位数字,即0~99;
任何一个以1开头的3位数字,即100~199;
任何一个以2开头,第二位数字在0~4之间的数字即200~249;
任何一个以25开头,第三位数字在0~5之间的三位数字,即250~255
首先满足第一条规则的正则是:
((\d{1,2})
满足第二条规则的正则是:
(1\d{1,2})
满足第三条规则的正则是:
(2[0-4]\d)
满足第四条规则的正则是:
(25[0-5])
将其组合起来就能得到一个能匹配0~255的正则表达式了:
((\d{1,2})|(1\d{1,2})|(2[0-4]\d)|(25[0-5]))
IPv4地址由4个这样的数字组成,中间用"."隔开,所以可以匹配IPv4的正则表达式为:
(((\d{1,2})|(1\d{1,2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{1,2})|(2[0-4]\d)|(25[0-5]))
使用边界匹配,不然256.1.1.1也会匹配成功,会匹配成56.1.1.1,那么最终正确的匹配IPv4的正则表达式为:
(?=(\b|\D))(((\d{1,2})|(1\d{1,2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{1,2})|(2[0-4]\d)|(25[0-5]))(?=(\b|\D))
*/
//验证IP地址
string emailPattern = @"(?=(\b|\D))(((\d{1,2})|(1\d{1,2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{1,2})|(2[0-4]\d)|(25[0-5]))(?=(\b|\D))";
while (true)
{
Console.WriteLine("请输入IP地址");
string emailInput = Console.ReadLine();
bool match = Regex.IsMatch(emailInput, emailPattern);
if (match)
{
Console.WriteLine("输入正确");
}
else
{
Console.WriteLine("输入格式有误");
}
}
}