Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无效的正则表达式模式_C#_Regex_Validation - Fatal编程技术网

C# 无效的正则表达式模式

C# 无效的正则表达式模式,c#,regex,validation,C#,Regex,Validation,我用c语言编写了一段代码,用于检查一个值是否是有效的正则表达式模式 代码是直截了当的: try { System.Text.RegularExpressions.Regex.IsMatch("", pattern); } catch (Exception ex) { return "pattern matches must be a valid regex value"; } 我试图测试它是否

我用c语言编写了一段代码,用于检查一个值是否是有效的正则表达式模式

代码是直截了当的:

   try
   {
      System.Text.RegularExpressions.Regex.IsMatch("", pattern);
   }
   catch (Exception ex)
   {
       return "pattern matches must be a valid regex value";
   }
我试图测试它是否正常工作,但我找不到无效的正则表达式模式

有什么建议吗?

这是无效的

[
您还可以在以下位置实时测试正则表达式的有效性:

顺便说一句,您实际上不必针对字符串测试正则表达式以查看它是否有效。您可以简单地实例化一个新的Regex对象并捕获异常

这是Regex Hero返回详细错误消息的步骤

public string GetRegexError(string _regexPattern, RegexOptions _regexOptions)
{
    try
    {
        Regex _regex = new Regex(_regexPattern, _regexOptions);
    }
    catch (Exception ex)
    {
        return ex.Message;
    }

    return "";
}
试试这个:

*

顺便说一句,在Java中,有一种方法可以将字符串编译为模式,它会抛出一个带有精确错误诊断的异常。

下面是一个不正确表达式的示例:

[0-9]++

这是另一个。任何以单个反斜杠(悬挂反斜杠)结尾的内容都无效

BOOM\

如果您想要测试,如果它工作正常,您需要使用有效和无效的模式来测试它,这应该使用一个单元测试框架来完成,比如

还可以显示更详细的错误消息,正如C#Cookbook中所建议的那样;见本章

下面是一个简单的示例类,其中包含一些测试数据(也可以在浏览器中立即运行)


我会说
try{System.Text.RegularExpressions.Regex.IsMatch(“,pattern);}catch(Exception){return“pattern matches必须是一个有效的正则表达式”;}
但这是一个正确的表达式:).NET也有它,它是
Regex.Compile
。是吗?不是Regex.CompileToAssembly吗?
using System;
using System.Text.RegularExpressions;
                    
public class Program
{
    public static Boolean validateRegEx(String pattern) 
    {   
        if (pattern == null || pattern.Length == 0) 
        {
            System.Console.Out.WriteLine("RegEx '{0}' is NOT valid. The pattern may not be empty or null.", pattern);
            return false;
        }
        
        try 
        { 
            new Regex(pattern);
            System.Console.Out.WriteLine("RegEx '{0}' is valid.", pattern);
            return true;
        }
        catch (ArgumentException ex) If 
        {
            System.Console.Out.WriteLine("RegEx '{0}' is NOT valid: {1}", pattern, ex.Message);
            return false;
        }
    }
    
    public static void Main()
    {
        // Invalid regular expressions:
        validateRegEx(""); // The pattern may not be empty or null.
        validateRegEx(null); // The pattern may not be empty or null.
        validateRegEx("**"); // Quantifier {x,y} following nothing.
        validateRegEx("\\"); //  Illegal \ at end of pattern.
        validateRegEx("AABB???"); // Nested quantifier ?.
        validateRegEx("AA(C(B)A"); // Not enough )'s.
        validateRegEx("AA(C)B)A"); // Too many )'s.

        // Valid regular expressions:
        validateRegEx("A"); // 'A' is valid.
        validateRegEx(".*ABA.?"); // '.*ABA.?' is valid.
        validateRegEx("AB?A"); // 'AB?A' is valid.
        validateRegEx("AB*A"); // AB*A' is valid.
        validateRegEx("A(BB){1,4}"); // 'A(BB){1,4}' is valid.
        // ...
    }
}