我允许用户输入正则表达式以匹配IP地址,以便在相关系统中进行IP过滤.我想验证输入的正则表达式是否有效,因为很多用户会弄乱op,尽管有良好的意图.
我当然可以在try/catch中做一个Regex.IsMatch(),看看它是否会爆炸,但有没有更智能的方法呢?速度不是一个问题,我只是宁愿避免无缘无故抛出异常.
我认为在这种情况下例外是可以的.
这是我放在一起的东西:
private static bool IsValidRegex(string pattern) { if (string.IsNullOrEmpty(pattern)) return false; try { Regex.Match("", pattern); } catch (ArgumentException) { return false; } return true; }
只要您捕获非常具体的异常,就可以执行try/catch.
如果使用正确,例外不是邪恶的.