2013-03-07 45 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