如果我从一个空字符串创建一个RegEx,我该怎么做才能使它匹配?
我正在寻找像RegexOptions.DoNotMatchWithEmpty这样的选项。
澄清:
假设我无法控制用于创建RegEx的字符串。字符串可以为空,我必须创建RegEx对象。我可能可以将RegEx设置为null并在上游添加大量空值检查,但我宁愿不这样做。最好的解决方案是RegexOptions标志,当RegEx用空字符串构造时,该标志告诉我们什么都不匹配。但那是不可用的。
答案 0 :(得分:3)
如何做到这一点
if (string.IsNullOrEmpty(regex))
{
return false;
}
// standard regex lookup goes here
更新:或者只返回a regular expression that matches nothing
if (string.IsNullOrEmpty(regex))
{
return new Regex("a^");
}
return new Regex(regex);
它的工作原理是因为^
字符与正在测试的字符串的开头匹配(除非提供了Multiline
正则表达式选项,但它不是),但是这显然无法匹配已匹配另一个字符a
。
答案 1 :(得分:1)
请尝试以下默认设置:
Regex.IsMatch(inputString, @"^(?!\s*$).+")
这适用于任何非空或空格的字符串。如果您只想检查RegEx实际上是否为空字符串,请使用String.IsNullOrWhitespace
。