如何使用正则表达式验证电子邮件

时间:2019-07-15 17:48:21

标签: c# regex string email

我是regex的新手,我尝试了一个简单的代码来过滤包含电子邮件模式(for example: uuu@ssss.hhhh)的字符串。

我编写了以下程序:

            string str;
            bool over = false;
            string pattern = "$[a-z]{1-500}@[a-z]{1-500}.(com|(.co&.il))^";
            Regex Filter = new Regex(pattern);

            while (!over)
            {
                Console.WriteLine("please enter a string and we will tell you if its good or not");
                str=Console.ReadLine();
                Console.WriteLine(pattern.Contains(str).ToString());
                if (pattern == "over")
                    over = true;
            }

现在结果令人困惑:例如,如果要使用输入'a'运行程序,则输出将为true,但是如果要使用输入{ {1}}的结果将是'b',但是可以肯定的是,这无法正常工作。

我知道如何使用false过滤电子邮件有很多答案,但是我想了解我做错了什么以及如何解决。

谢谢!

  

修改:   我已经听了您的话,并实际使用了regex,但是在regex语句上我仍然遇到问题,因此and不会给我aaa@hhh.co.il(但是true将)。这是新代码:

aaaa@bbb.com

1 个答案:

答案 0 :(得分:0)

我使用此RegEx在JavaScript中进行电子邮件验证,它是PCRE,应该与C#兼容。

^([\w-\.]+)@(([A-Za-z0-9\. -]+)\.([a-zA-Z]{2,64}))$/g

function isEmailValid(string)
{
	var isValid = true;

	string.split(',').filter(Boolean).forEach(function(email){
		if (!email.match(/^([\w-\.]+)@(([A-Za-z0-9\. -]+)\.([a-zA-Z]{2,64}))$/g))
		{
			isValid = false;

			return;
		}
	});

	return isValid;
}

console.log('Is email valid?', isEmailValid('some@email.com'));
console.log('Is email valid?', isEmailValid('some@email.c'));