2011-03-28 75 views
41

我需要一個正則表達式來驗證two or one數字,然後,.和再次two or one數字。正則表達式只有數字和點或逗號

所以,這些都是有效的輸入:

11,11 
11.11 
1.1 
1,1 
+6

[當問正則表達式的問題,隨時添加標籤爲特定的編程語言或工具(例如, Perl,Python或Java; vi,emacs或ɢɴᴜgrep;等等)你正在使用。](http://stackoverflow.com/tags/regex/info) – Johnsyweb 2011-03-28 10:12:13

回答

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

編輯:更新,以滿足新的要求(意見);)
編輯:刪除unnecesary qtfier按布萊恩

^[0-9]{1,2}([,.][0-9]{1,2})?$ 
+0

對不起,我沒有指定,但。並且其後的數字不是必需的.1或11也是有效的。 – user256034 2011-03-28 10:55:53

+5

^[0-9] {1,2}([,。] {1} [0-9] {1,2})?$這將匹配11 11,11 11.11 1.1並且它不匹配11.或11.11.11。並用Perl測試它看起來符合posix,所以它應該與其他正則表達式引擎一起工作 – user237419 2011-03-28 11:01:35

+1

不需要'{1}'。 – 2011-03-28 11:12:25

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

\ d表示數字,{1,2}部分表示前一個字符的1或2(\ d在第是大小寫),[,。]部分表示逗號或點。

+0

對不起,我沒有指定,但是,。並且其後的數字不是必需的.1或11也是有效的。 – user256034 2011-03-28 10:56:44

13

\d表示大多數語言的數字。您還可以在所有語言中使用[0-9]。對於「句號或逗號」使用[\.,]。根據你的語言,你可能需要更多的反斜槓,這取決於你如何引用表達式。最終,正則表達式引擎需要看到一個反斜槓。

*表示「零或多」,因此\d*[0-9]*表示「零個或多個數字」。 ?的意思是「零或一」。這些限定符都不完全意味着一個。大多數語言還允許使用{m,n}表示「在m和n之間」(即:{1,2}表示「在1和2之間」)

由於點或逗號和附加數字是可選的,因此您可以將它們在一個組中,並使用量詞來表示該組的「零」。

把所有的一起,你可以使用:

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

含義,一個或兩個數字\d{1,2},其次是零或一後跟一位或兩位數字組成的圓點或逗號的一組(...)?[\.,]\d{1,2}

9

爲了表示在正則表達式的形式的單個位則可以使用:

[0-9]或\ d

爲了指定的數量出現了多少次,你會增加

[0-9] *:星意味着有零個或多個數字

[0-9] {2}:{N}表示N個數位

[0-9] {0,2}:{N,M} N個數位或M位

[0-9] {0-9}: {NM} N位至M位。注:M可以留空針對無限表示

可以說,我要代表1至99之間的數字我將它表示爲例如:1-

[0-9] { 2}或[0-9] {1,2}或\ d {1-2}或\ d {1,2}

或者讓我們說我們正在使用二進制顯示,顯示字節大小,我們希望我們的數字在0到1之間,字節長度爲8,所以我們可以如下表示:

[0-1] {8}的二進制字節

然後,如果要添加一個或一個的表示。您可以使用的符號:

\,或\。也可以使用[。]或[,]

還可以說明的可能值之間的選擇這樣

[,]意味着要麼一個點或逗號符號

而你只需要連接在一起,所以在你想表示一個1或2位數字後跟一個逗號或一個句點,然後是兩個數字的情況下,你可以如下表示: >

[0-9] {1,2} [,] \ d {1-2}

另外請注意,內C++字符串的正則表達式的字符串必須是雙回削減所以每\成爲\\

0

如果你想成爲非常寬鬆,只需要兩個最後數字以逗號或點:

^([,.\d]+)([,.]\d{2})$ 
相關問題