我正在尝试验证userinput是否为电子邮件地址(向数据库添加成员)。
当调用验证事件时,用户将在TextBox中输入数据;我想检查输入是否是有效的电子邮件地址。因此至少包含字符串中的@和点(。)。
有没有办法通过代码,或者使用MaskedTextbox中的Mask进行此操作?
答案 0 :(得分:11)
不要打扰正则表达式。 It's a Bad Idea.
我通常从不使用异常来控制程序中的流程,但就个人而言,在这个例子中,我更愿意让创建MailAddress
类的专家为我工作:
try
{
var test = new MailAddress("");
}
catch (FormatException ex)
{
// wrong format for email
}
答案 1 :(得分:2)
简单电子邮件匹配的正则表达式:
@"\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b"
RFC 2822标准电子邮件匹配的正则表达式:
@"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?"
答案 2 :(得分:2)
不要使用正则表达式,它错过了很多情况甚至不好笑,而且除了聪明的人之前我们已经来解决这个问题。
using System.ComponentModel.DataAnnotations;
public class TestModel{
[EmailAddress]
public string Email { get; set; }
}
答案 3 :(得分:1)
请参阅:如何:Verify that Strings Are in Valid Email Format - MSDN
你正在寻找的正则表达式应该是:
"^(?("")(""[^""]+?""@)|(([0-9a-z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-z])@))
(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-z][-\w]*[0-9a-z]*\.)+[a-z0-9]{2,24}))$"
(来自同一source)
答案 4 :(得分:1)
我建议您使用这种方式,它对我来说效果很好。
Regex reg = new Regex(@"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*");
if (!reg.IsMatch(txtEmail.Text))
{
// Email is not valid
}
答案 5 :(得分:0)
我建议您使用Regular Expression之类的:
@"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?"
验证文本框的输入。
示例代码:
private void button1_Click(object sender, EventArgs e)
{
Regex emailRegex = new Regex(@"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?
^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+
[a-z0-9](?:[a-z0-9-]*[a-z0-9])?");
if (emailRegex.IsMatch(textBox1.Text))
{
MessageBox.Show(textBox1.Text + "matches the expected format.", "Attention");
}
}
编辑:我找到了更好,更全面的Regex
。