是否有正则表达式的语法验证器
本文关键字:验证 语法 正则表达式 是否 | 更新日期: 2023-09-27 18:35:06
>我有一个文本框,用户可以在其中输入正则表达式字符串,然后将其用作正则表达式匹配模式。
我想知道是否有办法验证输入的语法?我怎么知道它是否有效正则表达式模式?
我不希望用户能够输入任何东西,而只是有效的正则表达式模式。
谢谢!
只需使用用户的输入创建一个新的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
返回值。作为第三种替代方法,下面是相同的方法,将 .NET TryXxx
模式与 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;
}