2011-08-17 13 views
13

値が有効な正規表現パターンであるかどうかをチェックするコードがc#にあります。 コードは単純です:無効な正規表現パターン

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

任意の提案笑

..私はそれが正しく動作するかどうかをテストしようとしているが、私は、無効な正規表現パターンを見つけることができませんか?

+0

私がしようとし 'と言うでしょうパターンマッチは正しい正規表現の値でなければなりません ";}'しかし、それは正しい表現です。 – 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

は、非正しい表現の例です: ";キャッチ(例外){リターン{(、パターンSystem.Text.RegularExpressions.Regex.IsMatchを")}」

[0-9]++