0

ユーザーが正規表現文字列を入力できるテキストボックスがあり、これは正規表現一致パターンとして使用されます。

入力の構文を検証する方法があるのだろうか? 有効な正規表現パターンかどうかを確認するにはどうすればよいですか?

ユーザーが何も入力できないようにしたいのですが、有効な正規表現パターンだけを入力してください。

ありがとう!

4

2 に答える 2

3

Regexユーザーの入力を使用して新しいインスタンスを作成するだけです。

入力が無効な場合、ArgumentExceptionが発生します。

編集:私の意見では、他の回答のコードは不必要に複雑であるため、これが私の見解です。

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

ただし、正規表現を 2 回作成する必要があるため、このコードは使用しませ。1 回目は有効性をテストし、後で実際に使用します。これを行わないでください。代わりに、次を使用します。

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

nullこれで、無効な正規表現の戻り値を取得できます。TryXxx3 つ目の方法として、.NETパターンとパラメーターを使用する同じ方法を次に示しoutます。ただし、記録のために、これらのメソッドの設計が不適切であることがわかりました。最初の .NET バージョンに が含まれていた場合Nullable、それらはおそらく上記の方法のように見えたでしょう。したがって、ご自身の判断で使用してください。

bool TryParseRegex(string input, out Regex regex) {
    try {
        regex = new Regex(input);
        return true;
    }
    catch (ArgumentException) {
        return false;
    }
}
于 2012-05-24T07:03:15.430 に答える
2

try および catch ステートメントを使用して、入力が破損しているかどうかをテストできます。

public bool isValidRegex(string input){
     bool ret;


     ret = true;

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

     return ret;
}
于 2012-05-24T07:03:26.273 に答える