我有一个文本框,用户可以在其中输入正则表达式字符串,然后将其用作正则表达式匹配模式。
我想知道是否有办法验证输入的语法?我怎么知道它是否是有效的正则表达式模式?
我不希望用户能够输入任何内容,而只是输入有效的正则表达式模式。
谢谢!
我有一个文本框,用户可以在其中输入正则表达式字符串,然后将其用作正则表达式匹配模式。
我想知道是否有办法验证输入的语法?我怎么知道它是否是有效的正则表达式模式?
我不希望用户能够输入任何内容,而只是输入有效的正则表达式模式。
谢谢!
只需Regex
使用用户的输入创建一个新实例。
如果输入无效,ArgumentException
则会发生。
编辑:由于我认为其他答案的代码过于复杂,所以这是我的看法。
bool IsValidRegex(string input) {
try {
new Regex(input);
return true;
}
catch (ArgumentException) {
return false;
}
}
但是,我不会使用这段代码,因为它会将正则表达式构造两次:一次是为了测试有效性,然后是实际使用它。不要这样做。相反,请使用以下内容:
Regex TryParseRegex(string input) {
try {
return new Regex(input);
}
catch (ArgumentException) {
return null;
}
}
现在您获得了null
无效正则表达式的返回值。作为第三种选择,这里是相同的方法,使用TryXxx
带有out
参数的 .NET 模式。不过,作为记录,我发现这些方法设计得很糟糕。如果第一个 .NET 版本有Nullable
s,它们可能看起来像上面的方法。因此,请自行决定使用。
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;
}