我使用这个正则表达式来检查电子邮件。/^\w+([-+.'']\w+)*@\w*([-.çöişğü]\w*)*\.\w+([-.]\w+)*$/
但是这个正则表达式不接受像e-e--@hotmail.com
. 你能帮我改变我的正则表达式来接受这样的电子邮件吗?
问问题
232 次
5 回答
1
如果您用c#
标签标记您的问题,为什么不使用内置System.Net.Mail.MailAddress
类构造函数进行电子邮件验证?它支持很多邮件地址格式,并且比你的正则表达式覆盖更多的场景。看:
var isEmailValid = false;
try
{
var email = new MailAddress("e-e--@hotmail.com");
isValidEmail = true;
{
catch (FormatException x)
{
// invalid email address
}
它不是比你的正则表达式更容易吗?
于 2012-08-06T15:13:17.610 回答
0
我在 HTML5 模式电子邮件模式中使用它:
^(?:[-+~=!#$%&'*/?\^`{|}\w]+)(?:\.[-+~=!#$%&'*/?\^`{|}\w]+)*@(?:[a-zA-Z0-9][-a-zA-Z0-9]*[a-zA-Z0-9]\.)+[a-zA-Z]{2,6}$
于 2012-08-02T06:21:29.747 回答
0
/^\w+([-+.'']*\w*)*@\w*([-.çöişğü]\w*)*\.\w+([-.]\w+)*$/
于 2012-08-02T06:31:33.950 回答
0
将第二个更改\w+
为\w*
:
^\w+([-+.''] \w* )*@\w*([-.çöişğü]\w*)*\.\w+([-.]\w+)*$
于 2012-08-02T06:44:06.090 回答
0
这是我专门用于电子邮件验证的正则表达式,但我不推荐这种方式,尤其是在商业环境中使用时;由于这个事实,在考虑电子邮件验证时,正则表达式过于严格。它们不允许为完全可能的域留出空间,并且包含所有这些可能性将需要一个很长的正则表达式,使其不稳定。
string strRegex = @"^(?("")("".+?(?<!\\)""@)|(([0-9a-z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-z])@))" +
@"(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-z][-\w]*[0-9a-z]*\.)+[a-z0-9][\-a-z0-9]{0,22}[a-z0-9]))$";
Regex re = new Regex(strRegex);
if (re.IsMatch(txtEmail.Text) || txtEmail.Text == "" || txtEmail.Text.Length > 100 && txtEmail.Text.Length < 10)
{
MessageBox.Show("Thanks");
}
else
{
MessageBox.Show("Please enter a valid email address");
}
}
这是solotuion,我建议哪个更稳定,更有效,并且使用EmailAddressAttribute,因为它是内置类并且允许mroe空间并且不像正则表达式那样严格。希望这可以帮助。
TextBox tb = new TextBox();
tb.KeyDown += new KeyEventHandler(txtEmail_KeyDown);
// Run Checks after the enter is pressed.
if (e.KeyCode == (Keys.Enter) || e.KeyCode == (Keys.Tab))
{
if (!new EmailAddressAttribute().IsValid(txtEmail.Text))
{
MessageBox.Show(txtEmail.ToString() + " is not a valid Email address");
txtEmail.Clear();
}
else
{
MessageBox.Show("The address: " + txtEmail + " is valid");
txtEmail.Clear();
}
}
于 2017-05-19T13:09:47.733 回答