判断邮箱格式是否正确(C#实现正则表达式实现)
2021年2⽉25⽇15:52:17 补充
有⼤佬指出正则表达式的写法更好,并给出了代码,我深感赞同,将代码贴上,供参考。
public static bool IsEmail(string inputData){
Regex RegEmail =new Regex("^[\\w-]+@[\\w-]+\\.(com|net|org|edu|mil|tv|biz|info)$");
//w 英⽂字母或数字的字符串,和 [a-zA-Z0-9] 语法⼀样
Match m = RegEmail.Match(inputData);
return m.Success;
}
感谢⼤佬:
起因:
今天在书上看到⼀个⼩demo,⽤来判断邮箱格式是否正确。我觉得书上写的判断不是特别完善,所以⾃⼰琢磨了琢磨写了下来。当然也有可能有些不完善没有考虑到的地⽅,我以后琢磨琢磨在补充,也欢迎各位指正批评。
思路:
邮箱的格式⼤概为 username@hostname,我观察了观察,⼤概有这么⼏个特点:
1. 有且只有⼀个“@”
2. 必须含有“.”
3. “@”出现在“.”之前
4. “@”不可以是第⼀个位
5. “.”不能是最后⼀位
6. “@”后⾯不能直接就是“.”,两者之间要有内容
⼤概就先想到这么多。
主要就是运⽤字符串的⼀些操作。
做⼀些补充,今天在⽹上看了⼀下,邮箱还有⼀些特殊的:,可能会出现多个点,每个点之间也应该有内容,我没到相关的函数,苦苦思索不得其解。但是忽然灵机⼀动,其实两个点之间要有内容,就是不能出现..的⼦串,⽽且上⾯的第六条也就是也不能出现@.的⼦串。
所以在程序下做了⼀些修改和完善。匹配邮箱的正则表达式
代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text;
using System.Threading.Tasks;
namespace CSHARP_TEST
{
class Program
{
//判断邮箱是否合法
static public bool judgeEmailAddress(string emailAddress)
{
//有“@”
if(emailAddress.IndexOf("@")==-1)
{
Console.WriteLine("输⼊的字符串中没有@ !");
return false;
}
//只有⼀个“@”
if(emailAddress.IndexOf("@")!= emailAddress.LastIndexOf("@"))
{
Console.WriteLine("输⼊的字符串中有多个@ !");
return false;
}
//有“.”
if(emailAddress.IndexOf(".")==-1)
{
Console.WriteLine("输⼊的字符串中没有. !");
return false;
}
//“@”出现在第⼀个“.”之前
if(emailAddress.IndexOf("@")> emailAddress.IndexOf("."))
{
Console.WriteLine("输⼊的字符串中 @没有出现在.之前!");
return false;
}
//“@”不可以是第⼀个元素
if(emailAddress.StartsWith("@"))
{
Console.WriteLine("输⼊的字符串中 @是第⼀个元素!");
return false;
}
//“.”不可以是最后⼀位
if(emailAddress.EndsWith("."))
{
Console.WriteLine("输⼊的字符串中 .是最后⼀位!");
return false;
}
//不能出现“@.”
if(emailAddress.IndexOf("@.")!=-1)
{
Console.WriteLine("输⼊的字符串中出现了@. !");
return false;
}
//不能出现“..”
if(emailAddress.IndexOf("..")!=-1)
{
Console.WriteLine("输⼊的字符串中出现了.. !");
return false;
}
return true;
}
static void Main(string[] args)
{
string email_address;
Console.WriteLine("请输⼊邮箱地址:");
email_address = Console.ReadLine();
//判断邮箱地址是否合法
if(judgeEmailAddress(email_address)== false)
{
Console.WriteLine("E-mail address is illegal !");
}else{
Console.WriteLine("输⼊格式正确!");
}
}
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论