我是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
答案 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'));