2013-03-07 43 views
4

如果我們採取以下模式:70000 @ *和970000 @ * 字符串[email protected]:。5060 返回一個匹配到70000 @ *.NET正則表達式匹配整個字符串

我理解它匹配的原因,但我需要修改正則表達式以僅執行完整的字符串匹配。

任何想法?

謝謝!

我使用.net 3.5庫

下面是代碼:

[Microsoft.SqlServer.Server.SqlProcedure] 
    public static void RouteRegex(string phoneNumber, out string value) 
    { 
     if (string.IsNullOrEmpty(phoneNumber)) 
     { 
      value = string.Empty; 
      return; 
     } 
     const string strCommand = 
      "Select RouteID,sequence,Pattern From SIPProxyConfiguration.dbo.Routes order by routeid, sequence asc"; 
     using (var connection = new SqlConnection("context connection=true")) 
     { 
      try 
      { 
       connection.Open(); 
       using (var command =new SqlCommand(strCommand,connection)) 
       { 
        using (var reader = command.ExecuteReader()) 
        { 
         while (reader.Read()) 
         { 
          var regEx = reader[2] as string; 
          if (string.IsNullOrEmpty(regEx)) continue; 
          var routeId = reader[0]; 
          var sequence = reader[1]; 
          var match = Regex.Match(phoneNumber, regEx); 
          Regex.IsMatch() 
          if (!match.Success) continue; 
          value = routeId.ToString(); 
          return; 
         } 
        } 

       } 
       value = "No Match!"; 
      } 
      catch (Exception ex) 
      { 
       value = ex.Message; 
       return; 
      } 
     } 

    } 

回答

6

嘗試使用

^$ 

運營商在您的正則強制開始和結束匹配。

+0

非常感謝!我在記事本+ +(這是已知的正則表達式限制)嘗試了這一點,它沒有工作。我明天將它放入CLR SPROC並試用它。 .NET Regex Library有沒有已知的限制? – Wjdavis5 2013-03-07 01:56:55

+0

不是我所知道的。我經常使用這些操作員。另外,我使用http://regexpal.com/來測試事情,通常它可以和.NET – Syddraf 2013-03-07 05:00:05