2012-10-04 60 views
2

有人可以爲我驗證(正則表達式匹配缺點新手)。
而不是問這個問題,我寫這:C#正則表達式驗證

Regex rgx = new Regex (@"^{3}[a-zA-Z0-9](\d{5})|{3}[a-zA-Z0-9](\d{9})$" 

誰能telll我是否確定......

我想匹配的帳戶之一:

1. BAA89345 (8 chars) 
2. 12345678 (8 chars) 
3. 123456789112 (12 chars) 

在此先感謝。

+0

從你的例子是不是對我很清楚這是規則的字符的三個實例。你能明確地解釋你的正則表達式必須匹配的情況? –

+0

測試正則表達式的好工具是正則表達式小提琴:http://refiddle.com/ –

+0

我將把我的投票用於RadSoft正則表達式設計器。http://www.radsoftware.com .au/ – Mitch

回答

1

您可以使用正則表達式測試器。大量的免費在線。 My Regex Tester是我目前的最愛。

1

是3個字符的值,然後是總是以3開頭的數字......它可以以小於或多於3開始。如果可以,這些分鐘和最大字符在數字之前是什麼。

1

您需要將量詞放在他們應該量化的字符之後。此外,字符類需要用方括號包裝。這應該工作:

@"^(?:[a-zA-Z0-9]{3}|\d{3}\d{4})\d{5}$" 

有幾個好的,自動化的正則表達式測試器。您可能想查看regexpal

1

雖然其可以是完全有效的匹配,我建議重寫它爲:

^([A-ZA-Z] {3} \ d {5} | \ d {8} | \ d {12})$

這就要求要匹配的字符串中的一個:

  • [a-zA-Z]{3}\d{5}三個α和五個數字
  • \d{8} 8位數字或
  • \d{12}十二位數字。

使得它更易於閱讀,太...

0

我不是100%,您的目標,但也有一些問題,我可以看到了蝙蝠的權利。

  1. 當你列出可接受的字符相匹配,就像a-zA-Z0-9,你需要把它放在括號內,像[a-zA-Z0-9]在開始使用^將否定所包含的字符,例如`[^ a-zA-Z0-9]

  2. 單詞字符可以匹配,如\w,相當於[a-zA-Z0-9_]

  3. 量詞需要出現在匹配表達式的末尾。所以,與其{3}[a-zA-Z0-9],你需要寫[a-zA-Z0-9]{3}(假設你想匹配匹配[a-zA-Z0-9]