2012-01-10 137 views
-7

您好我需要匹配這種格式自定義的正則表達式

N - Number 

NN,NN 

NN.NN 

N,N and N.N 

和組合

N.NN and N,NN or NN,N and NN.N 
+6

這是習慣在計算器上提供的,你已經嘗試過什麼(一直找不到工作)片段表明,你已經努力自己解決這個問題。 – Reddog 2012-01-10 20:42:19

+0

我的不好。下一次我會嘗試更多:-) – user49126 2012-01-11 08:56:17

回答

1

如何:

\d{1,2}(?:[.,]\d{1,2})? 

解釋:

\d{1,2} : one or two digits 
(?:  : start non capture group 
    [.,] : . or , 
    \d{1,2} : one or two digits 
)?  : end group, optional 
+0

+1解釋 – user49126 2012-01-11 11:50:59

+0

@ user49126:謝謝。 – Toto 2012-01-11 12:16:50

+0

建議:使用[IgnorePatternWhitespace](http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=zh-CN&k=k(SYSTEM.TEXT.REGULAREXPRESSIONS.REGEXOPTIONS.IGNOREPATTERNWHITESPACE); k (TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22); k(DevLang-CSHARP)&rd = true),它具有#的實際正則表達式模式註釋轉義。它也允許在多行上傳播模式。 – OmegaMan 2012-01-11 14:37:53

2

這是你的正則表達式:

\d{1,2}[.,]\d{1,2} 

在這裏看到它在行動:http://regexr.com?2vman


這裏有一個稍微不同的版本:

\d\d?[.,]\d\d? 

在這裏看到它在行動:http://regexr.com?2vmaq


如果你想同時匹配出小數,使用此:

\d\d?[.,]?\d{0,2} 

看到它在這裏的行動:http://regexr.com?2vml4

+0

工程很好,但我忘了再提一個條件。它可以只是一個沒有或沒有的數字。例如只需3 – user49126 2012-01-11 08:51:35

+1

@ user49126 - 查看我的答案更新。 – 2012-01-11 15:13:32

0

我會像這樣的東西去:

Regex regex = new Regex(@"\d{1,2}[\.,]\d{1,2}"); 
+1

無需轉義括號內的'.' ... – 2012-01-10 20:44:24

1

爲什麼匹配嗎?

只需刪除逗號和使用的實際數量:

Regex.Replace("8,675,309.02", "(,)", string.Empty) // Outputs 8675309.02 

如果這是一個驗證的情況下,使用int.Parse會讓你知道,如果它有效。