2011-08-17 40 views
13

我在c#中有一段代碼檢查一個值是否是一個有效的正則表達式模式。 代碼是直截了當:一個無效的正則表達式模式

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

我想,以測試它是否工作正常,但我無法找到一個無效的正則表達式..嘿嘿

有什麼建議?

+0

我會說'嘗試{System.Text.RegularExpressions.Regex.IsMatch( 「」,圖案);}趕上(例外){回報「模式匹配必須是一個有效的正則表達式值「;}'但這是一個正確的表達式:) – Patrik

回答

26

這是無效的......

[ 

您還可以在http://regexhero.net/tester/

測試實時的正則表達式的有效性,對了,你實際上並不一定要考正規表達字符串來查看它是否有效。你可以簡單地實例化一個新的Regex對象並捕獲異常。

這是正則表達式的英雄確實返回詳細的錯誤信息......

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

    return ""; 
} 
+0

你節省了我的一天 – Szajba

5

試試這個:

* 

順便說一句,在Java中有編譯字符串的方法模式,它會拋出一個異常與精確的錯誤診斷。

+1

.NET也有它,它是'Regex.Compile'。 – Blindy

6

這裏有一個非正常表達的一個例子:

[0-9]++