【发布时间】:2010-11-30 14:03:50
【问题描述】:
我在运行 .NET 3.5 的开发机器上有以下正则表达式,它按设计工作。但是,当它部署到我们的测试环境(运行 .NET 2.0)时,它不能正常工作并且似乎总是返回 false。有谁知道罪魁祸首可能是什么?谢谢
using System.Text.RegularExpressions;
protected void emailContactCheck(object source, ServerValidateEventArgs args)
{
string[] allContacts = this.Contacts.InnerText.ToString().Split(";,".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
Regex rx = new Regex(@"^(([^<>()[\]\\.,;:\s@\""]+"
+ @"(\.[^<>()[\]\\.,;:\s@\""]+)*)|(\"".+\""))@"
+ @"((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"
+ @"\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+"
+ @"[a-zA-Z]{2,}))$", RegexOptions.IgnoreCase);
foreach (String contact in allContacts)
{
if (!rx.IsMatch(contact.Trim()))
{
args.IsValid = false;
return;
}
}
args.IsValid = true;
}
【问题讨论】:
-
你确定测试和开发环境的数据是一样的吗?我不知道 this.Contacts 包含什么,也无法绝对确定它们是等价的。
-
找到一些失败的样本数据,我们应该能够提供帮助。
-
当您只需要
""时,您正在使用\""转义引号。去掉反斜杠可能不会解决你的问题,但它会让 SO 的语法高亮正常工作,让我们更容易阅读代码。
标签: c# asp.net regex validation email-validation