2017-07-25 71 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次。 –