2011-12-22 55 views
1

我使用下面的代碼:正則表達式不匹配按預期在C#

string tile = "a1"; 
Regex regex= new Regex(@"/([a-z])(\d{1,2})/i"); 
if (regex.Match(tile).Success) Console.WriteLine("Found a match."); 
    else Console.WriteLine("No match."); 

和控制檯將返回「不匹配」。正則表達式本身對我來說似乎很好,但我可能錯過了一些簡單的東西。任何幫助,將不勝感激。

+0

在你想要的內容上添加幾個樣本,最重要的是你不想匹配什麼。你只是想要一個字母后跟一個數字來匹配嗎? – 2011-12-22 04:50:34

+0

您可能對[Regex Hero](http://regexhero.net/tester/)感興趣,您的.Net正則表達式測試:。你可以擺弄你的正則表達式,並找出自己什麼可行,哪些不可行。 – joce 2013-04-05 16:11:09

回答

5

您正在使用一些JavaScript正則表達式清單。嘗試:

Regex regex = new Regex(@"([a-z])(\d{1,2})", RegexOptions.IgnoreCase); 

,那麼你可能想使用IsMatch()

if(regex.IsMatch(tile)) 
{ 
    // ... 
} 
+0

這解釋了很多;我一直主要使用PHP,Ruby和Javascript--所有這些都使用這些描述符。謝謝您的幫助! – Jamie 2011-12-22 05:37:41

2

試試這個:

string tile = "a1"; 
Regex regex = new Regex(@"([a-z])(\d{1,2})", RegexOptions.IgnoreCase); 
if (regex.Match(tile).Success) Console.WriteLine("Found a match."); 
    else Console.WriteLine("No match."); 
0
Regex regex = new Regex(@"([a-z])(\d{1,2})"); 

我不知道爲什麼你已經領先/和尾隨/i。那些分別匹配字符//i

+0

他有這些,因爲他們表示在javascript中的正則表達式忽略大小寫。 – canon 2011-12-22 05:02:30

+0

啊哈。今天我學到了 – Amy 2011-12-22 07:18:09