我有一个文本框,用户可以在其中输入正则表达式字符串,然后将其用作正则表达式匹配模式。
我想知道是否有办法验证输入的语法? 我怎么知道它是否是有效的正则表达式模式?
我不希望用户能够输入任何内容,只是有效的正则表达式。
谢谢!
答案 0 :(得分:3)
只需使用用户的输入创建一个新的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
参数的.NET out
模式的方法相同。尽管如此,我发现这些方法设计得很糟糕。如果第一个.NET版本有Nullable
s,它们可能看起来像上面的方法。因此,请自行决定使用。
bool TryParseRegex(string input, out Regex regex) {
try {
regex = new Regex(input);
return true;
}
catch (ArgumentException) {
return false;
}
}
答案 1 :(得分:2)
您可以使用try和catch语句来测试其输入是否已损坏。
public bool isValidRegex(string input){
bool ret;
ret = true;
try{
new Regex(input);
}
catch (ArgumentException){
ret = false;
}
return ret;
}