多年来,我慢慢开发了一个正则表达式,可以正确验证MOST电子邮件地址,假设他们不使用IP地址作为服务器部分.
我在几个PHP程序中使用它,它大部分时间都可以工作.但是,我不时会遇到使用它的网站遇到问题的人,我最终不得不进行一些调整(最近我意识到我不允许使用4字符TLD).
验证电子邮件的最佳正则表达式是什么?
我已经看到了几个使用函数的解决方案,这些函数使用了几个较短的表达式,但我宁愿在一个简单的函数中使用一个长复杂表达式,而不是在一个更复杂的函数中使用几个短表达式.
我有一个运行长批处理的应用程序,可能会抛出许多异常.如果在批处理中的一个项目期间抛出非关键异常,我只想记录并继续,这样我们可以稍后解决问题,同时让其他批处理项继续.
一些例外,例如OutOfMemoryException,对整个应用程序来说是毁灭性的,这些我想重新抛出,以便它们冒泡到全局异常处理程序,它将记录错误并停止应用程序.
所以我的问题是,是否有一个合理的简短列表,我可以在我的下级异常处理程序中重新抛出,同时抑制(在记录之后)其他所有内容?
谢谢!
编辑:稍微详细说明,这是我的程序的基本结构
foreach(var item in longItemList)
{
try
{
bigDynamicDispatchMethod(item);
}
catch(Exception ex)
{
logException(ex);
}
}Run Code Online (Sandbox Code Playgroud)
可能会抛出大量异常,因为这个循环几乎是我应用程序的顶级.我项目中99%的代码都在调度方法之后.我在较低级别进行合理的异常处理,但是bug仍在继续运行,并且我不想在抛出异常后停止批处理中的其他无关进程.
试图找到可以在我的应用程序中的其他地方抛出哪些异常似乎是一项艰巨的任务,而且似乎更容易获得关键异常的黑名单.
有没有更好的方法来构建我的应用程序来处理这个?我愿意接受建议.
我有这种方法来验证电子邮件地址:
public static bool isEmail(string inputEmail)
{
inputEmail = NulltoString(inputEmail);
string strRegex = @"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}" +
@"\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\" +
@".)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$";
Regex re = new Regex(strRegex);
if (re.IsMatch(inputEmail))
return (true);
else
return (false);
}
Run Code Online (Sandbox Code Playgroud)
但我得到错误:The name 'NulltoString' does not exist in the current context.
有一种string方法相当于NulltoString()?