0

如果我从空字符串创建正则表达式,如何使它不匹配?

我正在寻找像 RegexOptions.DoNotMatchWithEmpty 或类似的选项。

澄清:

假设我无法控制用于创建 RegEx 的字符串。字符串可以为空,我必须创建 RegEx 对象。我可能可以将 RegEx 设置为 null 并在上游添加大量 null 检查,但我宁愿不这样做。最好的解决方案是 RegexOptions 标志,当 RegEx 使用空字符串构造时,该标志告诉不匹配任何内容。但这不可用。

4

2 回答 2

3

做这个怎么样

if (string.IsNullOrEmpty(regex))
{
    return false;
}
// standard regex lookup goes here

更新:或者只返回一个不匹配的正则表达式

if (string.IsNullOrEmpty(regex))
{
    return new Regex("a^");
}
return new Regex(regex);

它之所以有效,是因为该^字符与正在测试的字符串的开头匹配(除非Multiline提供了 regex 选项,但事实并非如此),但这显然无法匹配,因为我们已经匹配了另一个字符a.

于 2012-10-16T12:43:07.457 回答
1

尝试以下作为默认值:

Regex.IsMatch(inputString, @"^(?!\s*$).+")

这应该适用于任何非空或非空格的字符串。如果您只想检查 RegEx 是否实际上是一个空字符串,只需使用String.IsNullOrWhitespace.

于 2012-10-16T12:42:09.723 回答