【问题标题】:How to validate if a string is a regular expression? [duplicate]如何验证字符串是否为正则表达式? [复制]
【发布时间】:2013-07-30 12:19:16
【问题描述】:

我的应用程序包括在运行时使用 CodeDOM 创建 POCO 类。我正在寻找一种方法来允许我的最终用户指定对他创建的某些属性的值的限制(例如,如果他添加属性电子邮件而不是他可能希望将内容验证到电子邮件地址。很明显,最终用户可能有更多的自定义限制)。

我的目的是提供一个PropertyValidation 字段,最终用户可以在其中提供一个正则表达式,作为该属性创建实例的内容的验证器。

有什么方法可以在允许之前确保PropertyValidation 字段中提供的字符串是实际的Regex

【问题讨论】:

  • 您的最终用户知道如何正确编写正则表达式吗?请记住,简单的hi 是一个有效的正则表达式,但可能无法满足最终用户的需求。此外,有些东西(即邮件地址甚至 HTML 输入)无法通过正则表达式轻松验证。此外,写得不好且经常使用的正则表达式会使应用程序变慢。
  • 什么意思有效?这 . 是一个有效的正则表达式。
  • @TheSolution 是的,但这不是:?
  • @hangy:我的最终用户是系统管理员,所以是的,他们知道如何纠正正则表达式

标签: c# .net regex


【解决方案1】:

尝试创建一个 Regex 对象并捕获任何产生的错误:

try { Regex reg = new Regex(userDefinedValidation); } 
catch (ArgumentException) { /* not a regex */ }

【讨论】:

  • 您可能需要捕获ArgumentException 以避免吞下任何意外错误。
  • 其实我只是想出了这个,打算在这里添加它,在这里你做到了:) 谢谢!
【解决方案2】:

如果“Try-Catch 方式”过于笼统,那么您应该编写一个解析正确正则表达式的正则表达式;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-16
    • 2018-10-10
    • 1970-01-01
    相关资源
    最近更新 更多