2013-04-14 35 views
0
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如果我不發送的recordId,它返回false。我想修改我的正則表達式,從而當的recordId 爲空retun真正返回對myQuerystring。但真實的。

我該如何糾正我的regEx,使我的recordId成爲可選的userId?

+0

你有沒有試過「?」運營商? –

+0

爲什麼你在那裏有'|(\ s * $)'? – Oded

+0

這是一個OData網址嗎?如果是這樣,請嘗試使用ODataUriParser來解析它。 – alexn

回答

0

如果你只是想斷言,用戶ID是那裏,你可以使用這樣的:既然是的recordId可選的,我們不關心它是否存在或不

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

你的正則表達式建議你想要捕獲值,但如果是這樣的話我會更新我的答案。