是否有正则表达式的语法验证器

本文关键字:验证 语法 正则表达式 是否 | 更新日期: 2023-09-27 18:35:06

>我有一个文本框,用户可以在其中输入正则表达式字符串,然后将其用作正则表达式匹配模式。

我想知道是否有办法验证输入的语法?我怎么知道它是否有效正则表达式模式?

我不希望用户能够输入任何东西,而只是有效的正则表达式模式。

谢谢!

是否有正则表达式的语法验证器

只需使用用户的输入创建一个新的Regex实例。

如果输入无效,将发生ArgumentException

编辑:由于我认为另一个答案的代码不必要地复杂,这是我的看法。

bool IsValidRegex(string input) {
    try {
        new Regex(input);
        return true;
    }
    catch (ArgumentException) {
        return false;
    }
}

但是,不会使用此代码,因为它需要构造两次正则表达式:一次用于测试有效性,然后实际使用它。不要这样做。请改用以下内容:

Regex TryParseRegex(string input) {
    try {
        return new Regex(input);
    }
    catch (ArgumentException) {
        return null;
    }
}

现在,您可以获得无效正则表达式的null返回值。作为第三种替代方法,下面是相同的方法,将 .NET TryXxx 模式与 out 参数结合使用。不过,为了记录在案,我发现这些方法设计得很糟糕。如果第一个 .NET 版本有 Nullable 个,它们可能看起来像上面的方法。所以在你自己的角度使用。

bool TryParseRegex(string input, out Regex regex) {
    try {
        regex = new Regex(input);
        return true;
    }
    catch (ArgumentException) {
        return false;
    }
}

您可以使用 try 和 catch 语句来测试其输入是否损坏。

public bool isValidRegex(string input){
     bool ret;

     ret = true;
     try{
         new Regex(input);
     }
     catch (ArgumentException){
          ret = false;
     }
     return ret;
}