2011-08-17 37 views
13

Tôi có một đoạn mã trong C# để kiểm tra xem giá trị có phải là mẫu regex hợp lệ hay không. Mã là thẳng về phía trước:Mẫu regex không hợp lệ

 try 
    { 
     System.Text.RegularExpressions.Regex.IsMatch("", pattern); 
    } 
    catch (Exception) 
    { 
     return "pattern matches must be a valid regex value"; 
    } 

Tôi đang cố gắng để kiểm tra xem nó hoạt động một cách chính xác nhưng tôi không thể tìm thấy một mô hình regex không hợp lệ .. hehe

Bất kỳ lời đề nghị?

+0

tôi sẽ nói 'try {System.Text.RegularExpressions.Regex.IsMatch ("", mô hình);} catch (Exception) {return " mẫu phù hợp phải là một giá trị regex hợp lệ ";}' nhưng đó là một biểu thức chính xác :) – Patrik

Trả lời

26

này không hợp lệ ...

[ 

Bạn cũng có thể kiểm tra tính hợp lệ của biểu thức thông thường trong thời gian thực tại http://regexhero.net/tester/

Bằng cách này, bạn không thực sự phải kiểm tra thường xuyên biểu hiện với một chuỗi để xem nó có hợp lệ hay không. Bạn có thể đơn giản khởi tạo một đối tượng Regex mới và bắt ngoại lệ.

Đây là những gì Regex Anh hùng nào để trả về một thông báo lỗi chi tiết ...

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

    return ""; 
} 
+0

bạn đã lưu ngày của tôi – Szajba

5

Hãy thử điều này:

* 

BTW, trong Java có một phương pháp để biên dịch một chuỗi để một và nó ném một ngoại lệ với chẩn đoán lỗi chính xác.

+1

.NET có nó quá, đó là 'Regex.Compile'. – Blindy

6

Dưới đây là một ví dụ của một biểu thức không chính xác:

[0-9]++ 
Các vấn đề liên quan