ユーザーが正規表現文字列を入力できるテキストボックスがあり、これは正規表現一致パターンとして使用されます。
入力の構文を検証する方法があるのだろうか? 有効な正規表現パターンかどうかを確認するにはどうすればよいですか?
ユーザーが何も入力できないようにしたいのですが、有効な正規表現パターンだけを入力してください。
ありがとう!
ユーザーが正規表現文字列を入力できるテキストボックスがあり、これは正規表現一致パターンとして使用されます。
入力の構文を検証する方法があるのだろうか? 有効な正規表現パターンかどうかを確認するにはどうすればよいですか?
ユーザーが何も入力できないようにしたいのですが、有効な正規表現パターンだけを入力してください。
ありがとう!
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
これで、無効な正規表現の戻り値を取得できます。TryXxx
3 つ目の方法として、.NETパターンとパラメーターを使用する同じ方法を次に示しout
ます。ただし、記録のために、これらのメソッドの設計が不適切であることがわかりました。最初の .NET バージョンに が含まれていた場合Nullable
、それらはおそらく上記の方法のように見えたでしょう。したがって、ご自身の判断で使用してください。
bool TryParseRegex(string input, out Regex regex) {
try {
regex = new Regex(input);
return true;
}
catch (ArgumentException) {
return false;
}
}
try および catch ステートメントを使用して、入力が破損しているかどうかをテストできます。
public bool isValidRegex(string input){
bool ret;
ret = true;
try{
new Regex(input);
}
catch (ArgumentException){
ret = false;
}
return ret;
}