2017-07-25 69 views
1

浮點數我需要有限制的浮動和整數的正則表達式語句,比如它會接受點之前1或2位和點後1位或2位。整數限制應爲2位數。 什麼應該是有效的:正則表達式與限制

- 1.1 
- 11.1 
- 1.11 
- 11.11 
- 2 
- 22 

What should be invalid: 

- 111.111 
- 222 
Here is my Regex: 
/^\d{1,2}(\.\d){1,2}?$/ 


But it is not working properly 
kindly help me in this 
+0

你在斯威夫特/ Objective-C的編碼?那麼爲什麼使用正則表達式分隔符? –

+0

嘗試'^ \ d {1,2}(\。\ d {1,2})?$' –

+0

是否像'1.'和'2.'有效值?在 –

回答

0

試試這個:

/^\d{1,2}(\.\d{1,2})?$/ 

使得正則表達式可選

+0

呀,修復後按我上面的意見,將工作,但也沒有必要使用捕獲組,非捕獲就夠了。現在,我們的解決方案几乎相同。 –

+0

@WiktorStribiżew你的答案好多了,你從哪裏製作圖形? – sniperd

+1

你可以得到一個從https://jex.im/regulex –

1

使用以下模式的第2部分:

^\d{1,2}(?:\.\d{1,2})?$ 

the regex demo

enter image description here

詳細

  • ^ - 串的開始
  • \d{1,2} - 1或2位數字
  • (?:\.\d{1,2})? - 的可選序列:
    • \. - 點
    • \d{1,2} - 1或2位數字
  • $ - 字符串的結尾。
+0

哇,我喜歡漂亮的圖形 – sniperd

+0

太謝謝你了。它工作完美。你能解釋一個可選的順序嗎? \ d {1,2}這是數字\。這是針對點,\ d {1,2}這是針對點後的數字。但是?:這是什麼。它在表達式 – Fizzah

+0

中的工作方式@Fizzah'(?:...)'是一個[**非捕獲組**](https://stackoverflow.com/a/3513858/3832970)。它僅用於對模式進行分組,而不將所捕獲的值存儲在內存緩衝區中。它是什麼使它成爲可選的是後面的'?'量詞。 '?'使得非捕獲組內的整個模式匹配1或0次。 –