RegEx用于使值可选,并根据需要创建另一个值

时间:2013-04-14 20:14:38

标签: c# regex

string myQuery="RecordFiles/findrecords/$filter=userid eq 844427344589753 and
 recordid eq 55-278-278ac";

以下是我用来验证上述查询的正则表达式。

string myRegexQueryPattern = @"^(RecordFiles/findrecords/\$filter=userid eq)\s(?<userid>\S+)((\s(and recordid eq)\s(?<recordid >\S+))|(\s*$))";

如何更正我的regEx以使我的recordId成为可选项和userId?

 public static bool ValidateMyQuery(string query, Regex regex)
        {
            Match match = regex.Match(query);

            bool status = false;
            if (match.Success)
            {
                status = true;
            }
            return status;
        }

现在我的ValidateMyQuery对myQuerystring返回true。但是如果我没有发送recordId,它返回false。我想修改我的正则表达式,以便在recordId时重新返回true 是空的。

如何更正我的regEx以使我的recordId成为可选项和userId?

1 个答案:

答案 0 :(得分:0)

如果您只想声明userid在那里,您可以使用类似的内容:

string myRegexQueryPattern = @"^RecordFiles/findrecords/\$filter=.*userid eq\s\S+.*";

由于recordid是可选的,我们不关心它是否存在。

您的正则表达式建议您想要捕获值,但如果是这种情况,我会更新我的答案。