2014-03-03 82 views
-7

什麼是以下字符串正確的C#正則表達式:正則表達式此字符串格式

8:13-BK-99999

8也可以是一個2位數08或10中,總是數字

99999可以是3位至5位,所有的數字

BK可以是任何2個字母字符,不區分大小寫

由於

+0

你有什麼試過自己? – Lloyd

+0

是的,我嘗試了http://regexhero.net/tester/ ....我的問題是我用鼠標突出顯示了我的目標字符串,所以不管我輸入到上面的框中,它從未顯示爲比賽(藍色突出顯示是騎着黃色),這讓我覺得我完全沒有基地。 – bulltorious

+0

這不應該被關閉。問題中的具體問題很明顯,它不是一個「簡單的印刷錯誤」,它可以被複制(問題是缺乏對正則表達式的理解)。這不是一個好問題,而是應該被低估(正如我幫助過的那樣)。 – bjb568

回答

1

看到,因爲你問一個C#示例,不區分大小寫,可以選擇作爲RegexOptions之一。

我認爲13也是一個2位數的數字。

using System.Text.RegularExpressions; 

... 

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

if(regX.IsMatch(inputString)) 
{ 
    // Matched 
} 

... 
0

模式:

(\b(8|08|10):\d{2}-[a-zA-Z]{2}-\d{3,5}\b) 

代碼:

using System; 
using System.Text.RegularExpressions; 
namespace myapp 
{ 
    class Class1 
    { 
     static void Main(string[] args) 
     { 
      String sourcestring = "source string to match with pattern"; 
      Regex re = new Regex(@"(\b(8|08|10):\d{2}-[a-zA-Z]{2}-\d{3,5}\b)",RegexOptions.IgnoreCase); 
      Match m = re.Match(sourcestring); 
      for (int gIdx = 0; gIdx < m.Groups.Count; gIdx++) 
      { 
       Console.WriteLine("[{0}] = {1}", re.GetGroupNames()[gIdx], m.Groups[gIdx].Value); 
      } 
     } 
    } 
} 

例如:http://www.myregextester.com/?r=bbf584e8

其他的例子似乎沒有考慮到數開始超過兩個數字,或以五個以上結尾,他們j最好抓住他們之間的東西。我假設你不想要00:11-00-aa-00000,取自000:11-00-aa-000000

相關問題