【问题标题】:Validating regular expression without catching exception?验证正则表达式而不捕获异常?
【发布时间】:2009-11-19 12:39:38
【问题描述】:

在 .NET 应用程序(用 C# 编写)中,我有一个带有列表和文本框的 UI,用于输入过滤器字符串以过滤列表中显示的内容。我会在用户输入时刷新过滤器。

我现在想允许在过滤字符串中使用正则表达式,这会带来问题。当用户键入表达式时,它可能是无效的,例如在键入左括号的时间和键入右括号的时间之间。使用无效表达式新建正则表达式会引发异常,我想防止这种情况发生。一种方法是捕获异常,但我想知道是否有某种方法可以检查表达式是否是有效的正则表达式,而无需实际尝试使用它来新建正则表达式。

【问题讨论】:

  • 听起来你需要一个验证正则表达式的正则表达式:)
  • 这个想法掠过我的脑海,但突然引起了头痛。 :)
  • 不太难吧? ^.+$ 你来了:D

标签: c# .net regex


【解决方案1】:

只捕获异常。鉴于这将响应用户输入而发生,因此绝对不会有明显的性能损失。

【讨论】:

  • 我正打算走这条路。
【解决方案2】:

我会有一个特殊的开始字符,用户键入以指示他们正在开始一个正则表达式,此时您可以停止对键入的文本的实时处理,直到键入一个特殊的结束字符,此时您会重新开始并应用正则表达式。

【讨论】:

  • 完全同意且可靠的最佳实践。说啊; “要使用正则表达式,请键入 rxstart(YOUR REGEX HERE)rxend 并解析 rxstart()rxend 两者之间的任何内容都被定义为正则表达式并经过测试。其他想法:给用户一个复选框,让他声明“我现在正在输入正则表达式"。
猜你喜欢
  • 2015-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-08
  • 2014-01-02
  • 2021-05-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多